FreeBSD/sys/netpfil/ipfw/ip_dn_io.c
/*
 * Fetch packets from the delay line which are due now. If there are
 * leftover packets, reinsert the delay line in the heap.
 * Runs under scheduler lock.
 */
Fetch packets from the delay line which are due now. If there are
leftover packets, reinsert the delay line in the heap.
Runs under scheduler lock.
Fetch packets from the delay line which are due now . If there are leftover packets reinsert the delay line in the heap . Runs under scheduler lock .
static void
transmit_event(struct mq *q, struct delay_line *dline, uint64_t now)
{
	struct mbuf *m;
	struct dn_pkt_tag *pkt = NULL;
	dline->oid.subtype = 0; 
	while ((m = dline->mq.head) != NULL) {
		pkt = dn_tag_get(m);
		if (!DN_KEY_LEQ(pkt->output_time, now))
			break;
		dline->mq.head = m->m_nextpkt;
		dline->mq.count--;
		mq_append(q, m);
	}
	if (m != NULL) {
		dline->oid.subtype = 1; 
		heap_insert(&dn_cfg.evheap, pkt->output_time, dline);
	}
}
static void transmit_event ( struct mq * q , struct delay_line * dline , uint64_t now ) { struct mbuf * m ; struct dn_pkt_tag * pkt = NULL ; dline -> oid . subtype = 0 ; while ( ( m = dline -> mq . head ) != NULL ) { pkt = dn_tag_get ( m ) ; if ( ! DN_KEY_LEQ ( pkt -> output_time , now ) ) break ; dline -> mq . head = m -> m_nextpkt ; dline -> mq . count -- ; mq_append ( q , m ) ; } if ( m != NULL ) { dline -> oid . subtype = 1 ; heap_insert ( & dn_cfg . evheap , pkt -> output_time , dline ) ; } }
Fetch packets from the delay line which are due now.
Fetch packets from the delay line which are due now .
/* not in heap */ /* in heap */