module opendaylight-queue-types {
    namespace "urn:opendaylight:flow:types:queue";
    prefix queue-types;

    import ietf-yang-types {prefix yang; revision-date "2013-07-15";}

    revision "2013-09-25" {
        description "Initial revision of Queue Inventory model";
    }

    typedef queue-id {
            type yang:counter32;
            description "id for the specific queue.";
        }

    typedef queue-properties {
        description "Content of OFPQT_*.";
        type enumeration {
            enum min_rate {
                description "OFPQT_MIN_RATE";
            }
            enum max_rate {
                description "OFPQT_MAX_RATE";
            }
            enum experimenter {
                description "OFPQT_EXPERIMENTER";
            }
        }
    }


    grouping common-queue {
        leaf property {
            type uint16;
            description "One of OFPQT_. TODO:: use queue-properties type.";
        }
    }


    grouping queue-prop-min-rate {
        status deprecated;

        uses common-queue;

        leaf rate {
            type uint16;
            description "OFPQT_MIN, len: 16";
        }
    }

    grouping queue-prop-max-rate {
        status deprecated;

        uses common-queue;

        leaf rate {
            type uint16;
            description "OFPQT_MAX, len: 16";
        }
    }
    
    grouping queue-packet {
        description "Openflow queue description structure.";
        
        leaf queue-id {
            type queue-id;
            description "id for the specific queue.";
        }
        
        leaf port {
            type uint32;
            description "Port this queue is attached to.";
        }
        uses common-queue;
    }

   grouping queue-config-request {
        status deprecated;

        leaf port {
            type uint32;
            description "Port to be queried.";
        }
    }
}