module opendaylight-statistics-types {
    namespace "urn:opendaylight:model:statistics:types";
    prefix stat-types;

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

    description "Openflowplugin statistics common types.";

    revision "2013-09-25" {
        description "Initial revision of flow service";
    }

    grouping duration {
        description "Duration, contains seconds and nanoseconds.";

        container duration {
            leaf second {
                type yang:counter32;
            }
            leaf nanosecond {
                type yang:counter32;
            }
        }
    }

    grouping node-connector-statistics {
        description "Openflow node connector (port) statistics structure.";

        container packets {
            leaf received {
                type uint64;
            }
            leaf transmitted {
                type uint64;
            }
        }
        container bytes {
            leaf received {
                type uint64;
            }
            leaf transmitted {
                type uint64;
            }
        }
        leaf receive-drops {
            type uint64;
        }
        leaf transmit-drops {
            type uint64;
        }
        leaf receive-errors {
            type uint64;
        }
        leaf transmit-errors {
            type uint64;
        }
        leaf receive-frame-error {
            type uint64;
        }
        leaf receive-over-run-error {
            type uint64;
        }
        leaf receive-crc-error {
            type uint64;
        }
        leaf collision-count {
            type uint64;
        }
        uses duration;
    }

    grouping generic-statistics {
        description "Generic grouping for statistics";

        leaf packet-count {
            type yang:counter64;
        }

        leaf byte-count {
            type yang:counter64;
        }
        uses duration;
    }

    grouping generic-table-statistics {
        description "Generic grouping holding generic statistics related to switch table";

        leaf active-flows {
            type yang:counter32;
        }
        leaf packets-looked-up {
            type yang:counter64;
        }
        leaf packets-matched {
            type yang:counter64;
        }
    }

    grouping aggregate-flow-statistics {
        description "Aggregate flow statistics";

        leaf packet-count {
            type yang:counter64;
        }

        leaf byte-count {
            type yang:counter64;
        }
        leaf flow-count {
            type yang:counter32;
        }
    }

    grouping generic-queue-statistics {
        description "Generic statistics of switch port attached queues.";

        leaf transmitted-bytes {
            type yang:counter64;
        }

        leaf transmitted-packets {
            type yang:counter64;
        }

        leaf transmission-errors {
            type yang:counter64;
        }
        uses duration;
    }
}