static void m_cleanup_list(struct quehead *list_head)
{
    struct mbuf *m, *next;

    m = (struct mbuf *)list_head->qh_link;
    while ((struct quehead *)m != list_head) {
        next = m->m_next;
        if (m->m_flags & M_EXT) {
            g_free(m->m_ext);
        }
        g_free(m);
        m = next;
    }
    list_head->qh_link = list_head;
    list_head->qh_rlink = list_head;
}
static void m_cleanup_list(struct quehead *list_head)
{
    struct mbuf *m, *next;

    m = (struct mbuf *)list_head->qh_link;
    while ((struct quehead *)m != list_head) {
        next = m->m_next;
        if (m->m_flags & M_EXT) {
            g_free(m->m_ext);
        }
        g_free(m);
        m = next;
    }
    list_head->qh_link = list_head;
    list_head->qh_rlink = list_head;
}