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);
|
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_get - reference buffer
|
||||||
* @skb: buffer to reference
|
* @skb: buffer to reference
|
||||||
|
|
Reference in New Issue