NAME

     __skb_unlink, skb_unlink - remove an sk_buff from its list


SYNOPSIS

     #include <linux/skbuff.h>

     void __skb_unlink(struct sk_buff *skb, struct sk_buff_head
          *list));

     void skb_unlink(struct sk_buff *skb));


DESCRIPTION

     The skb_unlink  function  is  a  wrapper  for  __skb_unlink.
     __skb_unlink  removes  skb from its sk_buff_head.  It decre-
     ments the  list  qlen  pointer,  and  cleanly  detaches  the
     sk_buff from its queue.  This function should always be used
     instead of performing this task manually, as it  provides  a
     clean, standardized way of manipulating an sk_buff_head, and
     provides interrupt disabling (see NOTES below.)  Most  users
     will not call __skb_unlink directly, as it requires that two
     arguments be supplied and does  not  provide  any  interrupt
     handling.   skb_unlink  determines  the  list from which skb
     should be detached, and disables interrupts.


RETURN VALUE

     None.


NOTES

     It is important to note  the  difference  between  not  only
     __skb_unlink  and  skb_unlink,  but all the __skb_ functions
     and their skb_ counterparts.  Essentially, the __skb_  func-
     tions  are  non-atomic,  and should only be used with inter-
     rupts disabled.  As a convenience, the  skb_  functions  are
     provided,  which  perform interrupt disable / enable wrapper
     functionality  in  addition  to  performing  their  specific
     tasks.


AVAILABILITY

     Linux 1.0+


SEE ALSO

     intro(9), skb_dequeue(9), skb_insert(9),

     /usr/src/linux/net/core/skbuff.c
     /usr/src/linux/net/ipv4/af_inet.c
     /usr/src/linux/net/ipv4/ip_output.c
     /usr/src/linux/net/ipv4/tcp.c


AUTHOR

     Cyrus Durgin <cider@speakeasy.org>