One document matched: draft-bjorklund-netmod-snmp-cfg-00.txt




Network Working Group                                       M. Bjorklund
Internet-Draft                                            Tail-f Systems
Intended status: Standards Track                        J. Schoenwaelder
Expires: April 21, 2011                                Jacobs University
                                                        October 18, 2010


                                snmp cfg
                   draft-bjorklund-netmod-snmp-cfg-00

Abstract

   This document defines a collection of YANG definitions for
   configuring SNMP engines.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 21, 2011.

Copyright Notice

   Copyright (c) 2010 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.





Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 1]

Internet-Draft                  snmp cfg                    October 2010


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   4.  snmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  6
   5.  snmp-common  . . . . . . . . . . . . . . . . . . . . . . . . .  7
   6.  snmp-agent . . . . . . . . . . . . . . . . . . . . . . . . . . 11
   7.  snmp-community . . . . . . . . . . . . . . . . . . . . . . . . 14
   8.  snmp-notification  . . . . . . . . . . . . . . . . . . . . . . 16
   9.  snmp-target  . . . . . . . . . . . . . . . . . . . . . . . . . 19
   10. snmp-target-params . . . . . . . . . . . . . . . . . . . . . . 22
   11. snmp-usm . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
   12. snmp-vacm  . . . . . . . . . . . . . . . . . . . . . . . . . . 27
   13. IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 32
   14. Security Considerations  . . . . . . . . . . . . . . . . . . . 33
   15. Normative References . . . . . . . . . . . . . . . . . . . . . 34
   Appendix A.  Example configurations  . . . . . . . . . . . . . . . 35
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 36
































Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 2]

Internet-Draft                  snmp cfg                    October 2010


1.  Introduction

   TBD.
















































Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 3]

Internet-Draft                  snmp cfg                    October 2010


2.  Keywords

   The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14, [RFC2119].













































Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 4]

Internet-Draft                  snmp cfg                    October 2010


3.  Overview

   TBD.
















































Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 5]

Internet-Draft                  snmp cfg                    October 2010


4.  snmp

   <CODE BEGINS> file "snmp.yang"

   module snmp {
     namespace "http://yang-central.org/ns/snmp";
     prefix "snmp";

     include snmp-common {
       revision-date 2010-10-17;
     }
     include snmp-agent {
       revision-date 2010-10-17;
     }
     include snmp-community {
       revision-date 2010-10-17;
     }
     include snmp-notification {
       revision-date 2010-10-17;
     }
     include snmp-target {
       revision-date 2010-10-17;
     }
     include snmp-target-params {
       revision-date 2010-10-17;
     }
     include snmp-vacm {
       revision-date 2010-10-17;
     }
     include snmp-usm {
       revision-date 2010-10-17;
     }

     description
       "This module contains a collection of YANG definitions for
        configuring SNMP engines.";

     revision 2010-10-17 {
       description
         "Initial revision.";
     }

   }

   <CODE ENDS>






Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 6]

Internet-Draft                  snmp cfg                    October 2010


5.  snmp-common

   <CODE BEGINS> file "snmp-common.yang"

   submodule snmp-common {

     belongs-to snmp {
       prefix snmp;
     }

     description
       "This submodule contains a collection of common YANG definitions
       for configuring SNMP engines.";

     revision 2010-10-17 {
       description
         "Initial revision.";
     }

     /* Collection of SNMP features */

     feature proxy {
       description
         "A server implements this feature if it can act as an
         SNMP Proxy";
     }

     feature multiple-contexts {
       description
         "A server implements this feature if it supports other contexts
         than the default context.";
     }

     feature notification-filter {
       description
         "A server implements this feature if it supports SNMP
         notification filtering.";
     }

     /* Collection of SNMP specific data types */

     typedef admin-string {
       type string {
         length "0..255";
       }
       description
         "Represents and SnmpAdminString as defined in RFC 3411.";
       reference



Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 7]

Internet-Draft                  snmp cfg                    October 2010


         "RFC 3411: An Architecture for Describing SNMP Management
                    Frameworks";
     }

     typedef identifier {
       type admin-string {
         length "1..32";
       }
       description
         "Identifiers are used to name items in the SNMP configuration
         data store.";
     }

     typedef context-name {
       type admin-string {
         length "0..32";
       }
       description
         "The context type represents an SNMP context name.";
     }

     typedef sec-name {
       type admin-string;
       description
         "The sec-name type represents an SNMP security name.";
     }

     typedef mp-model {
       type union {
         type enumeration {
           enum any { value 0; }
           enum v1  { value 1; }
           enum v2c { value 2; }
           enum v3  { value 3; }
         }
         type int32 {
           range "0..2147483647";
         }
       }
       reference
         "RFC3411: An Architecture for Describing SNMP Management
                   Frameworks";
     }

     typedef sec-model {
       type union {
         type enumeration {
           enum v1  { value 1; }



Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 8]

Internet-Draft                  snmp cfg                    October 2010


           enum v2c { value 2; }
           enum usm { value 3; }
         }
         type int32 {
           range "1..2147483647";
         }
       }
       reference
         "RFC3411: An Architecture for Describing SNMP Management
                   Frameworks";
     }

     typedef sec-model-or-any {
       type union {
         type enumeration {
           enum any { value 0; }
         }
         type sec-model;
       }
       reference
         "RFC3411: An Architecture for Describing SNMP Management
                   Frameworks";
     }

     typedef sec-level {
       type enumeration {
         enum no-auth-no-priv { value 1; }
         enum auth-no-priv    { value 2; }
         enum auth-priv       { value 3; }
       }
       reference
         "RFC3411: An Architecture for Describing SNMP Management
                   Frameworks";
     }

     typedef engine-id {
       type string {
         pattern '(([0-9a-fA-F]){2}(:([0-9a-fA-F]){2}){4,31})?';
       }
       description
         "The Engine ID specified as a list of colon-specified hexa-
         decimal octets e.g. '4F:4C:41:71'.";
       reference
         "RFC3411: An Architecture for Describing SNMP Management
                   Frameworks";
     }

     typedef wildcard-object-identifier {



Bjorklund & Schoenwaelder  Expires April 21, 2011               [Page 9]

Internet-Draft                  snmp cfg                    October 2010


       type string;
       description
         "The wildcard-object-identifier type represents an SNMP object
         identifier where subidentifiers can be given either as a label,
         in numeric form, or a wildcard, represented by a *.";
     }

     container snmp {
       description
         "Top-level container for SNMP related configuration and
         status objects.";
     }

   }

   <CODE ENDS>



































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 10]

Internet-Draft                  snmp cfg                    October 2010


6.  snmp-agent

   <CODE BEGINS> file "snmp-agent.yang"

   submodule snmp-agent {

     belongs-to snmp {
       prefix snmp;
     }

     import ietf-yang-types {
       prefix yang;
     }
     import ietf-inet-types {
       prefix inet;
     }

     include snmp-common;

     revision 2010-10-17 {
       description
         "Initial revision.";
     }

     augment /snmp:snmp {

       container agent {

         description
           "Configuration of the SNMP agent";

         leaf enabled {
           type boolean;
           default "false";
           description
             "Enables the SNMP agent.";
         }

         // FIXME: support multiple endpoints

         leaf ip {
           type inet:ip-address;
           default "0.0.0.0";
           description
             "The IPv4 or IPv6 address to which the agent listens.";
         }

         leaf udp-port {



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 11]

Internet-Draft                  snmp cfg                    October 2010


           type inet:port-number;
           default "161";
           description
             "The UDP port to which the agent listens.";
         }

         container version {
           description
             "SNMP version used by the agent";
           leaf v1 {
             type empty;
           }
           leaf v2c {
             type empty;
           }
           leaf v3 {
             type empty;
             must "../../engine-id" {
               error-message
                 "when v3 is configured, an engine-id must be set";
             }
           }
         }

         container engine-id {
           presence "Sets the local engine-id.";

           description
             "The local SNMP engine's administratively-assigned unique
              identifier.";
           reference "SNMP-FRAMEWORK-MIB.snmpEngineID";

           leaf enterprise-number {
             type uint32;
             mandatory true;
           }
           choice method {
             mandatory true;
             leaf from-ip {
               type inet:ip-address;
             }
             leaf from-mac-address {
               type yang:mac-address;
             }
             leaf from-text {
               type string {
                 length 1..27;
               }



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 12]

Internet-Draft                  snmp cfg                    October 2010


             }
             leaf other {
               type string {
                 pattern "[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){0,27}";
               }
             }
           }
         }
       }

       container system {

         description
           "System group configuration.";

         leaf contact {
           type admin-string;
           default "";
           reference "SNMPv2-MIB.sysContact";
         }

         leaf name {
           type admin-string;
           default "";
           reference "SNMPv2-MIB.sysName";
         }

         leaf location {
           type admin-string;
           default "";
           reference "SNMPv2-MIB.sysLocation";
         }

       }

     }
   }

   <CODE ENDS>












Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 13]

Internet-Draft                  snmp cfg                    October 2010


7.  snmp-community

   <CODE BEGINS> file "snmp-community.yang"

   submodule snmp-community {

     belongs-to snmp {
       prefix snmp;
     }

     include snmp-common;
     include snmp-target;

     reference
       "RFC3584: Coexistence between Version 1, Version 2, and Version 3
                 of the Internet-standard Network Management Framework";

     revision 2010-10-17 {
       description
        "Initial revision.";
     }

     augment /snmp:snmp {

       list community {
         key index;

         description
           "List of communities";
         reference "SNMP-COMMUNITY-MIB.snmpCommunityTable";

         leaf index {
           type snmp:identifier;
           description "Index into the community list.";
           reference "SNMP-COMMUNITY-MIB.snmpCommunityIndex";
         }
         leaf name {
           type string;
           description
             "Use only when the community string is not the same as the
             index.";
           reference "SNMP-COMMUNITY-MIB.snmpCommunityName";
         }
         leaf sec-name {
           type snmp:sec-name;
           description
             "If not set, the value of 'name' is operationally used";
           reference "SNMP-COMMUNITY-MIB.snmpCommunitySecurityName";



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 14]

Internet-Draft                  snmp cfg                    October 2010


         }
         leaf engine-id {
           if-feature snmp:proxy;
           type snmp:engine-id;
           description
             "If not set, the value of the local SNMP engine is
             operationally used by the device.";
           reference "SNMP-COMMUNITY-MIB.snmpCommunityContextEngineID";
         }
         leaf context {
           if-feature snmp:multiple-contexts;
           type snmp:context-name;
           default "";
           reference "SNMP-COMMUNITY-MIB.snmpCommunityContextName";
         }
         leaf target-tag {
           type leafref {
             path "/snmp/target/tag";
           }
           description
             "Used to limit access for this community to the specified
             targets.";
           reference "SNMP-COMMUNITY-MIB.snmpCommunityTransportTag";
         }
       }
     }
   }


   <CODE ENDS>





















Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 15]

Internet-Draft                  snmp cfg                    October 2010


8.  snmp-notification

   <CODE BEGINS> file "snmp-notification.yang"

   submodule snmp-notification {

     belongs-to snmp {
       prefix snmp;
     }

     include snmp-common;
     include snmp-target;
     include snmp-target-params;

     reference
       "RFC3413: Simple Network Management Protocol (SNMP) Applications
        SNMP-NOTIFICATION-MIB";

     revision 2010-10-17 {
       description
         "Initial revision.";
     }

     augment /snmp:snmp/snmp:target {
       leaf notify-profile {
         if-feature snmp:notification-filter;
         type leafref {
           path "/snmp/notify-profile/name";
         }
       }
     }

     augment /snmp:snmp {

       list notify {

         key name;

         description
           "Targets that will receive notifications.";
         reference "SNMP-NOTIFY-MIB.snmpNotifyTable";

         leaf name {
           type snmp:identifier;
           description
             "An arbitrary name for the list entry.";
           reference "SNMP-NOTIFY-MIB.snmpNotifyName";
         }



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 16]

Internet-Draft                  snmp cfg                    October 2010


         leaf tag {
           type leafref {
             path "/snmp/target/tag";
           }
           mandatory true;
           description
             "Target tag, selects a set of notification targets.";
           reference "SNMP-NOTIFY-MIB.snmpNotifyTag";
         }
         leaf type {
           type enumeration {
             enum trap { value 1; }
             enum inform { value 2; }
           }
           must
             '. != inform or '
           + 'not(/snmp/target[tag = current()/../name]'
           + '      /../usm[../engine-id] != '
           + '    /snmp/target[tag = current()/../name]/../usm)' {
             error-message
               "When inform is configured, all v3 targets must have an
                engine-id configured.";
           }
           default trap;
           description "Defines the notification type to be generated.";
           reference "SNMP-NOTIFY-MIB.snmpNotifyType";
         }
       }

       list notify-profile {
         if-feature snmp:notification-filter;
         key name;

         description
           "Notification filter profiles associated with targets.";
         reference "SNMP-NOTIFY-MIB.snmpNotifyFilterProfileTable";

         leaf name {
           type snmp:identifier;
           description "Name of the filter profile";
           reference "SNMP-NOTIFY-MIB.snmpNotifyFilterProfileName";
         }
         list subtree {
           key "oids";

           reference "SNMP-NOTIFY-MIB.snmpNotifyFilterTable";

           leaf oids {



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 17]

Internet-Draft                  snmp cfg                    October 2010


             type wildcard-object-identifier;
             description
               "A family of subtrees included in this filter.";
             reference "SNMP-NOTIFY-MIB.snmpNotifyFilterSubtree
                        SNMP-NOTIFY-MIB.snmpNotifyFilterMask";
           }

           choice type {
             mandatory true;
             leaf included {
               type empty;
               description
                 "The family of subtrees is included in the filter.";
             }
             leaf excluded {
               type empty;
               description
                 "The family of subtrees is excluded from the filter.";
             }
             reference "SNMP-NOTIFY-MIB.snmpNotifyFilterType";
           }
         }
       }
     }
   }

   <CODE ENDS>
























Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 18]

Internet-Draft                  snmp cfg                    October 2010


9.  snmp-target

   <CODE BEGINS> file "snmp-target.yang"

 submodule snmp-target {

   belongs-to snmp {
     prefix snmp;
   }

   import ietf-inet-types {
     prefix inet;
   }

   include snmp-common;
   include snmp-usm;

   reference
     "RFC3413: Simple Network Management Protocol (SNMP) Applications
      SNMP-TARGET-MIB";

   revision 2010-10-17 {
     description
       "Initial revision.";
   }

   augment /snmp:snmp {

     list target {
       key name;

       description "List of targets.";
       reference "SNMP-TARGET-MIB.snmpTargetAddrTable";

       leaf name {
         type snmp:identifier;
         description
           "Identifies the target.";
         reference "SNMP-TARGET-MIB.snmpTargetAddrName";
       }

       // make a choice here so we can add other transports, or
       // they can augment.

       leaf ip {
         type inet:ip-address;
         mandatory true;
         description "Transport IP address of the target";



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 19]

Internet-Draft                  snmp cfg                    October 2010


         reference "SNMP-TARGET-MIB.snmpTargetAddrTDomain
                    SNMP-TARGET-MIB.snmpTargetAddrTAddress";
       }
       leaf udp-port {
         type inet:port-number;
         default 162;
         description "UDP port number";
         reference "SNMP-TARGET-MIB.snmpTargetAddrTDomain
                    SNMP-TARGET-MIB.snmpTargetAddrTAddress";
       }
       leaf-list tag {
         type snmp:identifier;
         description
           "List of tag values used to select target address.";
         reference "SNMP-TARGET-MIB.snmpTargetAddrTagList";
       }

       leaf timeout {
         type uint32;
         units "0.01 seconds";
         default 1500;
         description
           "Needed only if this target can receive v3 informs.";
         reference "SNMP-TARGET-MIB.snmpTargetAddrTimeout";
       }
       leaf retries {
         type uint8;
         default 3;
         description
           "Needed only if this target can receive v3 informs.";
         reference "SNMP-TARGET-MIB.snmpTargetAddrRetryCount";
       }
       leaf engine-id {
         type leafref {
           path "/snmp/usm/remote/engine-id";
         }
         must '../usm/user-name' {
           error-message
             "When engine-id is set, usm/user-name must also be set.";
         }
         must '/snmp/usm/remote[engine-id=current()]/'
            + 'user[name=current()/../usm/user-name]' {
           error-message
             "When engine-id is set, the usm/user-name must exist in the
             /snmp/usm/remote list for this engine-id.";
         }
         description
           "Needed only if this target can receive v3 informs.



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 20]

Internet-Draft                  snmp cfg                    October 2010


           This object is not present in the SNMP MIBs.  In
           RFC 3412, it is a implementation specific matter how this
           engine-id is handled.";
         reference "RFC 3412 7.1.9a";
       }
     }

   }
 }

   <CODE ENDS>








































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 21]

Internet-Draft                  snmp cfg                    October 2010


10.  snmp-target-params

   <CODE BEGINS> file "snmp-target-params.yang"

   submodule snmp-target-params {

     belongs-to snmp {
       prefix snmp;
     }

     include snmp-common;
     include snmp-community;
     include snmp-target;

     reference
       "RFC3413: Simple Network Management Protocol (SNMP) Applications
        SNMP-TARGET-MIB";

     revision 2010-10-17 {
       description
         "Initial revision.";
     }

     augment /snmp:snmp/snmp:target {

       /* By including the params directly in the target entry we
          lose some flexibility, but we get a simpler model with less
          cross-references.  In SNMP, two addrEntries can point to the
          same paramsEntry.
       */
       choice params {
         mandatory true;
         reference "SNMP-TARGET-MIB.snmpTargetParamsTable";
         container v1 {
           description "SNMPv1 parameters type";
           // mp-model is v1, sec-level is noAuthNoPriv
           leaf community {
             type leafref {
               path "/snmp/community/index";
             }
             mandatory true;
             reference "SNMP-TARGET-MIB.snmpTargetParamsSecurityName";
           }
         }
         container v2c {
           description "SNMPv2 community parameters type";
           // mp-model is v2c, sec-level is noAuthNoPriv
           leaf community {



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 22]

Internet-Draft                  snmp cfg                    October 2010


             type leafref {
               path "/snmp/community/index";
             }
             mandatory true;
             reference "SNMP-TARGET-MIB.snmpTargetParamsSecurityName";
           }
         }
         container usm {
           description "User based SNMPv3 parameters type";
           // mp-model is v3
           leaf user-name {
             type leafref {
               path "/snmp/usm/local/user/name";
             }
             mandatory true;
             reference "SNMP-TARGET-MIB.snmpTargetParamsSecurityName";
           }
           leaf sec-level {
             type sec-level;
             mandatory true;
             reference "SNMP-TARGET-MIB.snmpTargetParamsSecurityLevel";
           }
         }
       }
     }

   }

   <CODE ENDS>






















Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 23]

Internet-Draft                  snmp cfg                    October 2010


11.  snmp-usm

   <CODE BEGINS> file "snmp-usm.yang"

 submodule snmp-usm {

   belongs-to snmp {
     prefix snmp;
   }

   include snmp-common;

   description
     "This submodule contains a collection of YANG definitions for
     configuring the User-based Security Model (USM) of SNMP.";
   reference
     "RFC3414: User-based Security Model (USM) for version 3 of the
               Simple Network Management Protocol (SNMPv3).";

   revision 2010-10-17 {
     description
       "Initial revision.";
   }

   grouping key {
     choice key-type {
       leaf password {
         /* This must be stored in the config; it cannot be derived from
            the SNMP table.  Also, if SNMP is used to set the key,
            this password will not be used anymore */
         type string;
         description
           "Will be used to create a localized key.";
       }
       leaf key {
         type string {
           pattern '([0-9a-fA-F]){2}(:([0-9a-fA-F]){2})*';
         }
         description
           "Authentication key specified as a list of colon-specified
           hexa-decimal octets";
       }
     }
   }

   grouping user-list {
     list user {
       key "name";



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 24]

Internet-Draft                  snmp cfg                    October 2010


       reference "SNMP-USER-BASED-SM-MIB.usmUserTable";

       leaf name {
         type snmp:identifier;
         reference "SNMP-USER-BASED-SM-MIB.usmUserName
                    SNMP-USER-BASED-SM-MIB.usmUserSecurityName";
       }
       leaf security-name {
         type snmp:identifier;
         description
           "If not set, the value of 'name' is operationally used";
         reference "SNMP-USER-BASED-SM-MIB.usmUserSecurityName";
       }
       container auth {
         presence "enables authentication";
         description "Enables authentication protocol of the user";
         choice protocol {
           mandatory true;
           reference "SNMP-USER-BASED-SM-MIB.usmUserAuthProtocol";
           container md5 {
             presence "md5";
             uses key;
           }
           container sha {
             presence "sha";
             uses key;
           }
         }
       }
       container priv {
         must "../auth" {
           error-message
             "when privacy is used, authentication must also be used";
         }
         presence "enables encryption";
         description
           "Enables encryption for the authentication process.";

         choice protocol {
           mandatory true;
           reference "SNMP-USER-BASED-SM-MIB.usmUserPrivProtocol";
           container des {
             presence "des";
             uses key;
           }
           container aes {
             presence "aes";
             uses key;



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 25]

Internet-Draft                  snmp cfg                    October 2010


           }
         }
       }
     }
   }

   augment /snmp:snmp {

     container usm {
       description
         "Configuration of the User-based Security Model";
       container local {
         uses user-list;
       }

       list remote {
         key "engine-id";

         leaf engine-id {
           type snmp:engine-id;
           reference "SNMP-USER-BASED-SM-MIB.usmUserEngineID";
         }

         uses user-list;
       }
     }
   }
 }

   <CODE ENDS>





















Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 26]

Internet-Draft                  snmp cfg                    October 2010


12.  snmp-vacm

   <CODE BEGINS> file "snmp-vacm.yang"

 submodule snmp-vacm {

   belongs-to snmp {
     prefix snmp;
   }

   include snmp-common;

   description
     "This submodule contains a collection of YANG definitions for
     configuring the View-based Access Control Model (VACM) of SNMP.";
   reference
     "RFC3415: View-based Access Control Model (VACM) for the
               Simple Network Management Protocol (SNMP)";

   revision 2010-10-17 {
     description
      "Initial revision.";
   }

   typedef view-name {
     type snmp:identifier;
     description
       "The view-name type represents an SNMP VACM view name.";
   }

   typedef group-name {
     type snmp:identifier;
     description
       "The group-name type represents an SNMP VACM group name.";
   }

   augment /snmp:snmp {

     container vacm {
       description
         "Configuration of the View-based Access Control Model";

       list group {
         key name;
         description
           "VACM Groups";
         reference "SNMP-VIEW-BASED-ACM-MIB.vacmSecurityToGroupTable";




Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 27]

Internet-Draft                  snmp cfg                    October 2010


         leaf name {
           type group-name;
           description
             "The name of this VACM group.";
           reference "SNMP-VIEW-BASED-ACM-MIB.vacmGroupName";
         }

         list member {
           key "sec-name";
           min-elements 1;
           description
             "A member of this VACM group. According to VACM, every
             group must have at least one member.

             A certain combination of sec-name and sec-model MUST NOT
             be mapped to more than one group.";

           leaf sec-name {
             type snmp:sec-name;
             description
               "The securityName of a group member.";
           }

           leaf-list sec-model {
             type snmp:sec-model;
             min-elements 1;
             description
               "The security models under which this securityName
                is a member of this group.";
           }
         }

         list access {
           key "context sec-model sec-level";
           description
             "Definition of access right for groups";
           reference "SNMP-VIEW-BASED-ACM-MIB.vacmAccessTable";

           leaf context {
 // FIXME: since this is part of the key, it must not have an if-feature
 //            if-feature snmp:multiple-contexts;
             type snmp:context-name;
             description
               "The context (prefix) under which the access rights
                apply.";
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessContextPrefix";
           }



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 28]

Internet-Draft                  snmp cfg                    October 2010


           leaf context-match {
             if-feature snmp:multiple-contexts;
             type enumeration {
               enum exact;
               enum prefix;
             }
             default exact;
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessContextMatch";
           }

           leaf sec-model {
             type snmp:sec-model-or-any;
             description
               "The security model under which the access rights
               apply.";
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessSecurityModel";
           }

           leaf sec-level {
             type snmp:sec-level;
             description
               "The minimum security level under which the access rights
                apply.";
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessSecurityLevel";
           }

           leaf read-view {
             type leafref {
               path "/snmp/vacm/view/name";
             }
             description
               "The name of the MIB view of the SNMP context authorizing
                read access.";
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessReadViewName";
           }

           leaf write-view {
             type leafref {
               path "/snmp/vacm/view/name";
             }
             description
               "The name of the MIB view of the SNMP context authorizing
                write access.";
             reference



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 29]

Internet-Draft                  snmp cfg                    October 2010


               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessWriteViewName";
           }

           leaf notify-view {
             type leafref {
               path "/snmp/vacm/view/name";
             }
             description
               "The name of the MIB view of the SNMP context authorizing
                notify access.";
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmAccessNotifyViewName";
           }
         }
       }

       list view {
         key name;
         description
           "Definition of MIB views";
         reference
           "SNMP-VIEW-BASED-ACM-MIB.vacmViewTreeFamilyTable";

         leaf name {
           type view-name;
           description
             "The name of this VACM MIB view.";
           reference
             "SNMP-VIEW-BASED-ACM-MIB.vacmViewTreeFamilyName";
         }

         list subtree {
           key "oids";
           reference
             "SNMP-VIEW-BASED-ACM-MIB.vacmViewTreeFamilySubtree";

           leaf oids {
             type snmp:wildcard-object-identifier;
             description
               "A family of subtrees included in this MIB view.";
             reference
               "SNMP-VIEW-BASED-ACM-MIB.vacmViewTreeFamilySubtree
                SNMP-VIEW-BASED-ACM-MIB.vacmViewTreeFamilyMask";
           }

           choice type {
             mandatory true;
             reference "SNMP-VIEW-BASED-ACM-MIB.vacmViewTreeFamilyType";



Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 30]

Internet-Draft                  snmp cfg                    October 2010


             leaf included {
               type empty;
               description
                 "The family of subtrees is included in the MIB view";
             }
             leaf excluded {
               type empty;
               description
                 "The family of subtrees is excluded from the MIB view";
             }
           }
         }
       }
     }
   }
 }

   <CODE ENDS>

































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 31]

Internet-Draft                  snmp cfg                    October 2010


13.  IANA Considerations

   TBD.
















































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 32]

Internet-Draft                  snmp cfg                    October 2010


14.  Security Considerations

   TBD.
















































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 33]

Internet-Draft                  snmp cfg                    October 2010


15.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC6020]  Bjorklund, M., "YANG - A Data Modeling Language for the
              Network Configuration Protocol (NETCONF)", RFC 6020,
              October 2010.











































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 34]

Internet-Draft                  snmp cfg                    October 2010


Appendix A.  Example configurations

   TBD.
















































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 35]

Internet-Draft                  snmp cfg                    October 2010


Authors' Addresses

   Martin Bjorklund
   Tail-f Systems

   Email: mbj@tail-f.com


   Juergen Schoenwaelder
   Jacobs University

   Email: j.schoenwaelder@jacobs-university.de







































Bjorklund & Schoenwaelder  Expires April 21, 2011              [Page 36]


PAFTECH AB 2003-20262026-04-24 01:42:54