net: Add skb_queue_next().
A lot of code wants to iterate over an SKB queue at the top level using it's own control structure and iterator scheme. Provide skb_queue_next(), which is only valid to invoke if skb_queue_is_last() returns false. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d258b4914b
commit
249c8b42c7
|
@ -485,6 +485,24 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list,
|
|||
return (skb->next == (struct sk_buff *) list);
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_next - return the next packet in the queue
|
||||
* @list: queue head
|
||||
* @skb: current buffer
|
||||
*
|
||||
* Return the next packet in @list after @skb. It is only valid to
|
||||
* call this if skb_queue_is_last() evaluates to false.
|
||||
*/
|
||||
static inline struct sk_buff *skb_queue_next(const struct sk_buff_head *list,
|
||||
const struct sk_buff *skb)
|
||||
{
|
||||
/* This BUG_ON may seem severe, but if we just return then we
|
||||
* are going to dereference garbage.
|
||||
*/
|
||||
BUG_ON(skb_queue_is_last(list, skb));
|
||||
return skb->next;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_get - reference buffer
|
||||
* @skb: buffer to reference
|
||||
|
|
Loading…
Reference in New Issue