module ietf-netconf-with-defaults {

   namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults";

   prefix ncwd;

   import ietf-netconf { prefix nc; }

   organization
    "IETF NETCONF (Network Configuration Protocol) Working Group";

   contact
    "WG Web:   <http://tools.ietf.org/wg/netconf/>

     WG List:  <netconf@ietf.org>

     WG Chair: Bert Wijnen
               <bertietf@bwijnen.net>

     WG Chair: Mehmet Ersue
               <mehmet.ersue@nsn.com>

     Editor: Andy Bierman
             <andy.bierman@brocade.com>

     Editor: Balazs Lengyel
             <balazs.lengyel@ericsson.com>";

   description
    "This module defines an extension to the NETCONF protocol
     that allows the NETCONF client to control how default
     values are handled by the server in particular NETCONF
     operations.

     Copyright (c) 2011 IETF Trust and the persons identified as
     the document authors.  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 6243; see
     the RFC itself for full legal notices.";

   revision 2011-06-01 {
     description
       "Initial version.";
     reference
      "RFC 6243: With-defaults Capability for NETCONF";
   }

   typedef with-defaults-mode {
      description
        "Possible modes to report default data.";
      reference
         "RFC 6243; Section 3.";
      type enumeration {
         enum report-all {
             description
               "All default data is reported.";
             reference
               "RFC 6243; Section 3.1";
         }
         enum report-all-tagged {
             description
               "All default data is reported.
                Any nodes considered to be default data
                will contain a 'default' XML attribute,
                set to 'true' or '1'.";
             reference
               "RFC 6243; Section 3.4";
         }
         enum trim {
             description
               "Values are not reported if they contain the default.";
             reference
               "RFC 6243; Section 3.2";
         }
         enum explicit {
             description
               "Report values that contain the definition of
                explicitly set data.";
             reference
               "RFC 6243; Section 3.3";
         }
     }
   }

   grouping with-defaults-parameters {
     description
       "Contains the <with-defaults> parameter for control
        of defaults in NETCONF retrieval operations.";

     leaf with-defaults {
       description
         "The explicit defaults processing mode requested.";
       reference
         "RFC 6243; Section 4.5.1";

       type with-defaults-mode;
     }
   }

   // extending the get-config operation
   augment /nc:get-config/nc:input {
       description
         "Adds the <with-defaults> parameter to the
          input of the NETCONF <get-config> operation.";
       reference
         "RFC 6243; Section 4.5.1";

       uses with-defaults-parameters;
   }

   // extending the get operation
   augment /nc:get/nc:input {
       description
         "Adds the <with-defaults> parameter to
          the input of the NETCONF <get> operation.";
       reference
         "RFC 6243; Section 4.5.1";

       uses with-defaults-parameters;
   }

   // extending the copy-config operation
   augment /nc:copy-config/nc:input {
       description
         "Adds the <with-defaults> parameter to
          the input of the NETCONF <copy-config> operation.";
       reference
         "RFC 6243; Section 4.5.1";

       uses with-defaults-parameters;
   }
}
