Context Queues
If you want to send multiple packets, possibly through different interfaces, you have a couple of options. You can handle each libnet context and send the packet individually, or you can use context queues to create a series of packets, and send them out in an organized fashion.
Context queues are a very useful mechanism for handling
multiple-context situations. It is easy to create a context queue:
just push a context onto the queue using libnet_cq_add( )
as follows:
int libnet_cq_add (libnet_t *l, char *label)
This function returns 1
on success and
-1
on failure, with libnet_geterror()
telling you why. Each context and identifier
label
must be unique, as they are identifiers for
returning libnet contexts from the queue using
libnet_cq_find_by_label()
as follows:
libnet_t* libnet_cq_find_by_label (char *label)
To look up labels for contexts on the queue, use
libnet_cq_getlabel( )
as follows:
int8_t* libnet_cq_getlabel (libnet_t *l)
Contexts can be iterated using libnet_cq_head( )
to return the first item in the queue
and prevent additional items from being added to the queue;
libnet_cq_next()
to return the next item in the queue;
libnet_cq_last()
to see if the context is the last in
the queue; or libnet_cq_size()
to track the queue size. Do this
manually as follows:
libnet_t* l; for (l = libnet_cq_head( ); libnet_cq_last( ); l = libnet_cq_next( )) { ... }
Or you can do this using the provided
for_each_context_in_cq()
macro.
You can remove contexts from the queue either ...
Get Network Security Tools now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.