Addition of common model.

Change-Id: If5fd6bae01a59ebf9d27f8369ac3403c83f70fad
diff --git a/models/common/src/main/yang/ietf-snmp-community@2014-12-10.yang b/models/common/src/main/yang/ietf-snmp-community@2014-12-10.yang
new file mode 100644
index 0000000..6bddf1a
--- /dev/null
+++ b/models/common/src/main/yang/ietf-snmp-community@2014-12-10.yang
@@ -0,0 +1,241 @@
+submodule ietf-snmp-community {
+
+  belongs-to ietf-snmp {
+    prefix snmp;
+  }
+
+  import ietf-netconf-acm {
+    prefix nacm;
+  }
+
+  include ietf-snmp-common;
+  include ietf-snmp-target;
+  include ietf-snmp-proxy;
+
+  organization
+    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netmod/>
+     WG List:  <mailto:netmod@ietf.org>
+
+     WG Chair: Thomas Nadeau
+               <mailto:tnadeau@lucidvision.com>
+
+     WG Chair: Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>
+
+     Editor:   Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+    "This submodule contains a collection of YANG definitions
+     for configuring community-based SNMP.
+
+     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).
+
+     This version of this YANG module is part of RFC 7407; see
+     the RFC itself for full legal notices.";
+
+  reference
+    "RFC 3584: Coexistence between Version 1, Version 2, and
+       Version 3 of the Internet-standard Network
+       Management Framework";
+
+  revision 2014-12-10 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7407: A YANG Data Model for SNMP Configuration";
+  }
+
+  augment /snmp:snmp {
+
+    list community {
+      key index;
+
+      description
+        "List of communities.";
+      reference
+        "RFC 3584: Coexistence between Version 1, Version 2,
+           and Version 3 of the Internet-standard
+           Network Management Framework.
+           SNMP-COMMUNITY-MIB.snmpCommunityTable";
+
+      leaf index {
+        type snmp:identifier;
+        description
+          "Index into the community list.";
+        reference
+          "RFC 3584: Coexistence between Version 1, Version 2,
+             and Version 3 of the Internet-standard
+             Network Management Framework.
+             SNMP-COMMUNITY-MIB.snmpCommunityIndex";
+      }
+      choice name {
+        nacm:default-deny-all;
+        description
+          "The community name, specified as either a string or
+           a binary value.  The binary name is used when the
+           community name contains characters that are not legal
+           in a string.
+
+           If not set, the value of 'security-name' is operationally
+           used as the snmpCommunityName.";
+        reference
+          "RFC 3584: Coexistence between Version 1, Version 2,
+             and Version 3 of the Internet-standard
+             Network Management Framework.
+             SNMP-COMMUNITY-MIB.snmpCommunityName";
+        leaf text-name {
+          type string;
+          description
+            "A community name that can be represented as a
+             YANG string.";
+        }
+        leaf binary-name {
+          type binary;
+          description
+            "A community name represented as a binary value.";
+        }
+      }
+      leaf security-name {
+        type snmp:security-name;
+        mandatory true;
+        nacm:default-deny-all;
+        description
+          "The snmpCommunitySecurityName of this entry.";
+        reference
+          "RFC 3584: Coexistence between Version 1, Version 2,
+             and Version 3 of the Internet-standard
+             Network Management Framework.
+             SNMP-COMMUNITY-MIB.snmpCommunitySecurityName";
+      }
+      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
+          "RFC 3584: Coexistence between Version 1, Version 2,
+             and Version 3 of the Internet-standard
+             Network Management Framework.
+             SNMP-COMMUNITY-MIB.snmpCommunityContextEngineID";
+      }
+      leaf context {
+        type snmp:context-name;
+        default "";
+        description
+          "The context in which management information is accessed
+           when using the community string specified by this entry.";
+        reference
+          "RFC 3584: Coexistence between Version 1, Version 2,
+             and Version 3 of the Internet-standard
+             Network Management Framework.
+             SNMP-COMMUNITY-MIB.snmpCommunityContextName";
+      }
+      leaf target-tag {
+        type snmp:tag-value;
+        description
+          "Used to limit access for this community to the specified
+           targets.
+
+           Implementations MAY restrict the values of this leaf
+           to be one of the available values of /snmp/target/tag in
+           a valid configuration.";
+        reference
+          "RFC 3584: Coexistence between Version 1, Version 2,
+             and Version 3 of the Internet-standard
+             Network Management Framework.
+             SNMP-COMMUNITY-MIB.snmpCommunityTransportTag";
+      }
+    }
+  }
+
+  grouping v1-target-params {
+    container v1 {
+      description
+        "SNMPv1 parameters type.
+         Represents snmpTargetParamsMPModel '0',
+         snmpTargetParamsSecurityModel '1', and
+         snmpTargetParamsSecurityLevel 'noAuthNoPriv'.";
+      leaf security-name {
+        type snmp:security-name;
+        mandatory true;
+        description
+          "Implementations MAY restrict the values of this leaf
+           to be one of the available values of
+           /snmp/community/security-name in a valid configuration.";
+        reference
+          "RFC 3413: Simple Network Management Protocol (SNMP).
+             Applications.
+             SNMP-TARGET-MIB.snmpTargetParamsSecurityName";
+      }
+    }
+  }
+
+  grouping v2c-target-params {
+    container v2c {
+      description
+        "SNMPv2 community parameters type.
+         Represents snmpTargetParamsMPModel '1',
+         snmpTargetParamsSecurityModel '2', and
+         snmpTargetParamsSecurityLevel 'noAuthNoPriv'.";
+      leaf security-name {
+        type snmp:security-name;
+        mandatory true;
+        description
+          "Implementations MAY restrict the values of this leaf
+           to be one of the available values of
+           /snmp/community/security-name in a valid configuration.";
+        reference
+          "RFC 3413: Simple Network Management Protocol (SNMP).
+             Applications.
+             SNMP-TARGET-MIB.snmpTargetParamsSecurityName";
+      }
+    }
+  }
+
+  augment /snmp:snmp/snmp:target-params/snmp:params {
+    case v1 {
+      uses v1-target-params;
+    }
+    case v2c {
+      uses v2c-target-params;
+    }
+  }
+
+  augment /snmp:snmp/snmp:target {
+    when "snmp:v1 or snmp:v2c";
+    leaf mms {
+      type union {
+        type enumeration {
+          enum "unknown" { value 0; }
+        }
+        type int32 {
+          range "484..max";
+        }
+      }
+      default "484";
+      description
+        "The maximum message size.";
+      reference
+        "RFC 3584: Coexistence between Version 1, Version 2,
+           and Version 3 of the Internet-standard
+           Network Management Framework.
+           SNMP-COMMUNITY-MIB.snmpTargetAddrMMS";
+    }
+  }
+
+}