~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/net/inetpeer.h

Version: ~ [ 2.2.5 ] ~ [ 2.4.1 ] ~ [ 2.4.9 ] ~ [ 2.6.17.10 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *              INETPEER - A storage for permanent information about peers
  3  *
  4  *  Version:    $Id: inetpeer.h,v 1.1 2000/01/06 00:41:51 davem Exp $
  5  *
  6  *  Authors:    Andrey V. Savochkin <saw@msu.ru>
  7  */
  8 
  9 #ifndef _NET_INETPEER_H
 10 #define _NET_INETPEER_H
 11 
 12 #include <linux/types.h>
 13 #include <linux/init.h>
 14 #include <linux/sched.h>
 15 #include <linux/spinlock.h>
 16 #include <asm/atomic.h>
 17 
 18 struct inet_peer
 19 {
 20         struct inet_peer        *avl_left, *avl_right;
 21         struct inet_peer        *unused_next, **unused_prevp;
 22         atomic_t                refcnt;
 23         unsigned long           dtime;          /* the time of last use of not
 24                                                  * referenced entries */
 25         __u32                   v4daddr;        /* peer's address */
 26         __u16                   avl_height;
 27         __u16                   ip_id_count;    /* IP ID for the next packet */
 28         __u32                   tcp_ts;
 29         unsigned long           tcp_ts_stamp;
 30 };
 31 
 32 void                    inet_initpeers(void) __init;
 33 
 34 /* can be called with or without local BH being disabled */
 35 struct inet_peer        *inet_getpeer(__u32 daddr, int create);
 36 
 37 extern spinlock_t inet_peer_unused_lock;
 38 extern struct inet_peer *inet_peer_unused_head;
 39 extern struct inet_peer **inet_peer_unused_tailp;
 40 /* can be called from BH context or outside */
 41 extern inline void      inet_putpeer(struct inet_peer *p)
 42 {
 43         spin_lock_bh(&inet_peer_unused_lock);
 44         if (atomic_dec_and_test(&p->refcnt)) {
 45                 p->unused_prevp = inet_peer_unused_tailp;
 46                 p->unused_next = NULL;
 47                 *inet_peer_unused_tailp = p;
 48                 inet_peer_unused_tailp = &p->unused_next;
 49                 p->dtime = jiffies;
 50         }
 51         spin_unlock_bh(&inet_peer_unused_lock);
 52 }
 53 
 54 extern spinlock_t inet_peer_idlock;
 55 /* can be called with or without local BH being disabled */
 56 extern inline __u16     inet_getid(struct inet_peer *p)
 57 {
 58         __u16 id;
 59 
 60         spin_lock_bh(&inet_peer_idlock);
 61         id = p->ip_id_count++;
 62         spin_unlock_bh(&inet_peer_idlock);
 63         return id;
 64 }
 65 
 66 #endif /* _NET_INETPEER_H */
 67 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.