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;
   }

}
