netconfcentral logo

ietf-netconf-exi@2014-03-03



  module ietf-netconf-exi {

    yang-version 1;

    namespace
      "urn:ietf:params:xml:ns:netconf:exi:1.0";

    prefix exi;

    import ietf-netconf-monitoring {
      prefix ncm;
      revision-date "2010-10-04";
    }

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

    contact
      "Robert Varga <robert.varga@pantheon.sk>";

    description
      "NETCONF Protocol Operations for Efficient XML Interchange.";

    revision "2014-03-03" {
      description
        "Updated with dynamic schema negotiation.";
      reference
        "I-D.varga-netconf-exi-capability-02";

    }

    revision "2013-10-21" {
      description "Initial revision";
      reference
        "I-D.varga-netconf-exi-capability-01";

    }


    typedef exi-alignment {
      type enumeration {
        enum "bit-packed" {
          value 0;
          description
            "Use bit-packed EXI alignment";
        }
        enum "byte-aligned" {
          value 1;
          description
            "Use byte-aligned EXI alignment";
        }
        enum "pre-compression" {
          value 2;
          description
            "Use pre-compression EXI alignment";
        }
        enum "compressed" {
          value 3;
          description
            "Do not set EXI alignment, use EXI compression
                    instead";
        }
      }
      description
        "EXI alignment specification.";
    }

    typedef exi-fidelity {
      type enumeration {
        enum "comments" {
          value 0;
          description
            "Preserve.comments EXI Fidelity option";
        }
        enum "dtd" {
          value 1;
          description
            "Preserve.dtd EXI Fidelity option";
        }
        enum "lexical-values" {
          value 2;
          description
            "Preserve.lexicalValues EXI Fidelity option";
        }
        enum "pis" {
          value 3;
          description
            "Preserve.pis EXI Fidelity option";
        }
        enum "prefixes" {
          value 4;
          description
            "Preserve.prefixes EXI Fidelity option";
        }
      }
      description "EXI fidelity options.";
    }

    rpc start-exi {
      description
        "Start encoding protocol messages in Efficient XML
            Interchange format.";
      reference
        "I-D.varga-netconf-exi-capability";

      input {
        leaf alignment {
          type exi-alignment;
          default "bit-packed";
          description
            "EXI alignment to use.";
        }

        leaf-list fidelity {
          type exi-fidelity;
          description
            "EXI fidelity options to use.";
        }
      }
    }  // rpc start-exi

    rpc stop-exi {
      description
        "Stop encoding protocol messages in Efficient XML
            Interchange format. Revert back to using the usual text
            XML encoding.";
    }  // rpc stop-exi

    grouping schema-identifier {
      description
        "The globally-unique identifier of a schema. This
            grouping contains the verbatim transcription of arguments
            to <get-schema> RPC as defined in RFC6022, except all
            leaves are made mandatory.";
      leaf identifier {
        type string;
        mandatory true;
        description
          "Identifier for the schema list entry.";
      }

      leaf version {
        type string;
        description
          "Version of the schema requested.  If this parameter
                is not present, and more than one version of the
                schema exists on the server, a 'data-not-unique'
                error is returned, as described above.";
      }

      leaf format {
        type identityref {
          base ncm:schema-format;
        }
        description
          "The data modeling language of the schema.  If this
                parameter is not present, and more than one formats
                of the schema exists on the server, a
                'data-not-unique' error is returned, as described
                above.";
      }
    }  // grouping schema-identifier

    typedef exi-schema-id {
      type uint16;
      description
        "Schema identifier for use in the EXI stream header.";
    }

    augment /ncm:netconf-state/ncm:schemas/ncm:schema {
      description
        "Additional information about schemas useful for EXI
            encoding";
      leaf exi-useable {
        type boolean;
        default 'false';
        description
          "Set to true if the device can use the schema for EXI
                Schema-informed encoding.";
      }

      leaf exi-schema-id {
        type exi-schema-id;
        description
          "The EXI schema ID currently assigned to this schema.
                This value has meaning only within the session and
                may differ on other sessions.";
      }
    }

    rpc enable-schema-encoding {
      description
        "Request the use of specificied schema in EXI message
            encoding.  This request is sent by the client to the
            server. If the server is able to transition into using
            the schema, it assigns it a unique EXI integer
            identifier.  This identifier is to be used in the EXI
            header as schema identifier.

            The server may start using the identifier as soon as it
            enqueus the response. The client may start using the
            identifier as soon as it sees this RPC complete.";
      input {
        uses schema-identifier;
      }

      output {
        leaf exi-schema-id {
          type exi-schema-id;
          mandatory true;
          description
            "The EXI Schema ID assigned to this schema for
                    encoding purposes.";
        }
      }
    }  // rpc enable-schema-encoding

    rpc disable-schema-encoding {
      description
        "This RPC is send by the client when it stops using a
            particular exi-schema-id.";
      input {
        leaf exi-schema-id {
          type exi-schema-id;
          mandatory true;
          description
            "The EXI Schema ID which should be disabled.";
        }
      }
    }  // rpc disable-schema-encoding
  }  // module ietf-netconf-exi