flowclassifier.yang 2.94 KB
module flow-classifier {

    yang-version 1;

    namespace "sfc.flowclassifier";

    prefix "flow-classifier";

    import "port-pair" {
        prefix "port-pair";
    } 
    
    organization "ON-LAB";

    description "This submodule defines for flow classifier.";

    revision "2016-05-24" {
        description "Initial revision.";
    }

    typedef flow-classifier-id {
        type port-pair:uuid;
    }

    typedef IpPrefix {
        type string;
    }

    typedef VirtualPortId {
        type string;
    }
 
    grouping flow-classifier {
        container flow-classifier {
        	leaf id {
                    type flow-classifier-id;
        	}

        	leaf tenant-id {
        	    type port-pair:tenant-id;
        	}

        	leaf name {
           	    type string;
          	}
 
        	leaf description {
            	    type string;
        	}
    
        	leaf etherType {
            	    type string;
        	}

        	leaf protocol {
            	    type string;
        	}

        	leaf priority {
            	    type int32;
        	}

        	leaf minSrcPortRange {
           	    type int32;
        	}

        	leaf maxSrcPortRange {
            	    type int32;
        	}

       		leaf minDstPortRange {
            	    type int32;
        	}  

        	leaf maxDstPortRange {
            	    type int32;
        	}

        	leaf srcIpPrefix {
            	    type IpPrefix;
        	}

        	leaf dstIpPrefix {
            	    type IpPrefix;
        	}

        	leaf srcPort {
	   	    type VirtualPortId;
        	}

        	leaf dstPort {
	    	    type VirtualPortId;
        	}
    	}
    }
   rpc exists {
      input {
         leaf id {
            type flow-classifier-id;
          }
      }
      output {
          leaf is-present {
              type boolean;
          }
      }
    }

   rpc get-flow-classifier-count {
      
      output {
          leaf count {
              type int32;
          }
      }
    }
   
   rpc get-flow-classifier {
      input {
         leaf id {
            type flow-classifier-id;
          }
      }
      output {
          uses flow-classifier;
      }
    }

   rpc create-flow-classifier {
      input {
          uses flow-classifier;
      }
      output {
          leaf is-created {
              type boolean;
          }
      }
    }

   rpc update-flow-classifier {
      input {
          uses flow-classifier;
      }
      output {
          leaf is-updated {
              type boolean;
          }
      }
    }

   rpc remove-flow-classifier {
      input {
         leaf id {
            type flow-classifier-id;
          }
      }
      output {
          leaf is-removed {
              type boolean;
          }
      }
    }
 
    notification Flow-Classifier-Put {
       uses flow-classifier;
    }
    
    notification Flow-Classifier-Delete {
       uses flow-classifier;
    }

    notification Flow-Classifier-Update {
        uses flow-classifier;
    }
}