   module ietf-sd-onos-service-l3vpn {
     namespace "urn:ietf:params:xml:ns:yang:ietf-sd-onos-service-l3vpn";
     prefix l3vpn ;
     /*
     import ietf-inet-types{
       prefix inet;
     }
     import ietf-yang-types {
       prefix yang-types;
     }
     */
     import ietf-sd-onos-service-types {
       prefix service-types;
     }
     import ietf-sd-onos-common-types {
       prefix types;
     }
     organization "";
     contact "";

     description
       "L3vpn configuration model in ONOS.";

     revision "2015-12-16" {
       reference "";
     }

      grouping l3vpn {
       description
         "The configuration module of l3 vpn.";
       leaf name {
         type string ;
         mandatory true;
         description "name of snc eline." ;
       }
       leaf id {
         type uint32 ;
         mandatory true;
         description "ID of snc eline." ;
       }
       leaf user-label {
         type string ;
         description "user label of snc eline." ;
       }
       leaf parent-ncd-id {
         type string ;
         description "parent ncd id." ;
       }

       leaf admin-status {
         type types:admin-status;
         description "administration status." ;
       }
       leaf operate-status {
         type types:operate-status;
         description "operation status." ;
       }

       uses service-type-grouping;
       container acess-information {
              description "access information of the l3 vpn." ;

           uses service-types:l3-ac;        }

       container protect-policy{
         description "L3VPN Service protect policy." ;
         uses service-types:protect-policy;
       }
       container tunnel-service {
         description "tunnel service." ;
         uses service-types:tunnel-service;
       }

     }

     grouping service-type-grouping {
       description "Basic service type" ;
       leaf service-topology {
         type enumeration {
           enum full-mesh {
             value 1 ;
             description "full-mesh." ;
           }
           enum hub-spoke {
             value 2 ;
             description "hub-spoke." ;
           }
         }
         default full-mesh;
         description "service topology type." ;
       }
     }

     container service {
       description
         "Root level of L3vpn service module.";
       container l3vpn-cfg {
         description
           "L3vpn configuration model in ONOS.";
         list vpn-cfg {
           key name;
           description
             "vpn configuration parameter list.";
           uses l3vpn;
         }
       }
       container service-paths {
         description
           "The service path of the l3 vpn.";
       }
     }



     rpc create-l3vpn-instance {
       description "Create l3vpn instance." ;
       input {
         container l3vpn-instance {
           description "Create l3vpn instance." ;
           uses l3vpn;
         }
       }
     }

     rpc delete-l3vpn-instance {
       description "Delete l3vpn instance." ;
       input {
         leaf l3vpn-id {
           type string;
           description "vpn id." ;
         }
       }
     }

     rpc close-l3vpn {
     description "Close l3vpn." ;
         input {
             leaf l3vpn-id {
                 type string;
           description "vpn id." ;
             }
             container ac-status {
           description "Access status of the vpn." ;
                 list acs{
                     key "id";
             description "Access information." ;
                     leaf id {
                         type string;
               description "Access id." ;
                     }
                     leaf admin-status {
                         type types:admin-status;
               description "Administration status." ;
                     }
                 }
             }
         }
     }

     rpc modify-l3vpn-instance-basic {
       description "Modify l3vpn instance basic information." ;
       input {
         leaf l3vpn-id {
           type string;
           description "vpn id." ;
         }
         leaf user-label {
           type string ;
           description "user label." ;
         }
       }
     }

     rpc modify-l3vpn-instance-ac-qos {
       description "Modify l3vpn instance ac qos information." ;
       input {
         leaf l3vpn-id {
           type string;
           description "L3vpn ID." ;
         }
         container ac-qos {
           description "ac qos information." ;
           list acs{
           key "id";
           description "acs list." ;
                 leaf id {
                   type string;
                   description "acs ID." ;
               }
               container qos-policy {
             description "qos policy." ;
                   container qos-if-cars {
               description "cars qos policy." ;
                          uses service-types:qos-if-car;

                   }
               }
           }
         }
       }
     }
     rpc modify-l3vpn-instance-connection {
       description "Modify a l3vpn connection." ;
       input {
         leaf l3vpn-id {
           type string;
           description "L3vpn ID." ;
         }
         container ac-connection {
           description "ac connection." ;
           list acs{
             key "id";
             description "acs ID." ;
             leaf id {
               type string ;
               description "acs ID." ;
             }
             container connection {
               description "CE to PE  connection." ;
               uses service-types:connection;
             }
           }
         }
       }
     }
     rpc inquire-l3vpn-instance-work-path {
       description "Inquire a L3VPN instance work path." ;
        input {
              leaf service-id {
                type string;
             description "service ID." ;
              }
               leaf ingress-ne-id {
                 type string ;
              description "ingress network element ID." ;
               }
               leaf destination-ne-id {
                 type string ;
              description "destination network element ID." ;
               }
               leaf ingress-ac-id {
                 type string ;
              description "ingress ac ID." ;
               }
               leaf destination-ac-id {
                 type string ;
              description "destination ac ID." ;
               }
               leaf path-layer {
                  type string ;
               description "path layer." ;
               }
               leaf path-role {
                  type string ;
             description "path role." ;
               }
       }
       output {
           container service-path {
            description "service path." ;
              leaf service-id {
                type string;
             description "service ID." ;
              }
               leaf ingress-ne-id {
                 type string ;
              description "ingress network element ID." ;
               }
               leaf destination-ne-id {
                 type string ;
               description "destination network element ID." ;
               }
               leaf ingress-ac-id {
                 type string ;
              description "ingress access circuit ID." ;
               }
               leaf destination-ac-id {
                 type string ;
              description "destination access circuit ID." ;
               }
               leaf path-layer {
                  type string ;
               description "path layer." ;
               }
               leaf path-role {
                  type string ;
               description "path role." ;
               }
               list path-list {
                   key "ne-id";
             description "path list." ;
                   leaf ne-id {
                      type string;
              description "network element ID." ;
                   }
                   leaf ingress-ltp-id {
                      type string;
              description "LTP ID." ;
                   }
                   leaf backward-peer-id {
                      type string;
              description "backward peer ID." ;
                   }
                   leaf egress-ltp-id {
                      type string;
              description "egress ltp ID." ;
                   }
                   leaf forward-peer-id {
                      type string;
              description "forward peer ID." ;
                   }
               }
             }
       }
     }
   }
