[ALSA] Remove sequencer instrument layer
[safe/jmp/linux-2.6] / include / net / dst.h
index e156e38..e3ac7d0 100644 (file)
@@ -37,9 +37,7 @@ struct sk_buff;
 
 struct dst_entry
 {
-       struct dst_entry        *next;
-       atomic_t                __refcnt;       /* client references    */
-       int                     __use;
+       struct rcu_head         rcu_head;
        struct dst_entry        *child;
        struct net_device       *dev;
        short                   error;
@@ -49,19 +47,20 @@ struct dst_entry
 #define DST_NOXFRM             2
 #define DST_NOPOLICY           4
 #define DST_NOHASH             8
-#define DST_BALANCED            0x10
-       unsigned long           lastuse;
        unsigned long           expires;
 
        unsigned short          header_len;     /* more space at head required */
-       unsigned short          nfheader_len;   /* more non-fragment space at head required */
        unsigned short          trailer_len;    /* space to reserve at tail */
 
        u32                     metrics[RTAX_MAX];
        struct dst_entry        *path;
 
        unsigned long           rate_last;      /* rate limiting for ICMP */
-       unsigned long           rate_tokens;
+       unsigned int            rate_tokens;
+
+#ifdef CONFIG_NET_CLS_ROUTE
+       __u32                   tclassid;
+#endif
 
        struct neighbour        *neighbour;
        struct hh_cache         *hh;
@@ -70,14 +69,17 @@ struct dst_entry
        int                     (*input)(struct sk_buff*);
        int                     (*output)(struct sk_buff*);
 
-#ifdef CONFIG_NET_CLS_ROUTE
-       __u32                   tclassid;
-#endif
-
        struct  dst_ops         *ops;
-       struct rcu_head         rcu_head;
                
-       char                    info[0];
+       unsigned long           lastuse;
+       atomic_t                __refcnt;       /* client references    */
+       int                     __use;
+       union {
+               struct dst_entry *next;
+               struct rtable    *rt_next;
+               struct rt6_info   *rt6_next;
+               struct dn_route  *dn_next;
+       };
 };
 
 
@@ -87,7 +89,7 @@ struct dst_ops
        __be16                  protocol;
        unsigned                gc_thresh;
 
-       int                     (*gc)(void);
+       int                     (*gc)(struct dst_ops *ops);
        struct dst_entry *      (*check)(struct dst_entry *, __u32 cookie);
        void                    (*destroy)(struct dst_entry *);
        void                    (*ifdown)(struct dst_entry *,
@@ -95,10 +97,12 @@ struct dst_ops
        struct dst_entry *      (*negative_advice)(struct dst_entry *);
        void                    (*link_failure)(struct sk_buff *);
        void                    (*update_pmtu)(struct dst_entry *dst, u32 mtu);
+       int                     (*local_out)(struct sk_buff *skb);
        int                     entry_size;
 
        atomic_t                entries;
-       kmem_cache_t            *kmem_cachep;
+       struct kmem_cache               *kmem_cachep;
+       struct net              *dst_net;
 };
 
 #ifdef __KERNEL__
@@ -139,6 +143,13 @@ static inline void dst_hold(struct dst_entry * dst)
        atomic_inc(&dst->__refcnt);
 }
 
+static inline void dst_use(struct dst_entry *dst, unsigned long time)
+{
+       dst_hold(dst);
+       dst->__use++;
+       dst->lastuse = time;
+}
+
 static inline
 struct dst_entry * dst_clone(struct dst_entry * dst)
 {
@@ -169,6 +180,7 @@ static inline struct dst_entry *dst_pop(struct dst_entry *dst)
        return child;
 }
 
+extern int dst_discard(struct sk_buff *skb);
 extern void * dst_alloc(struct dst_ops * ops);
 extern void __dst_free(struct dst_entry * dst);
 extern struct dst_entry *dst_destroy(struct dst_entry * dst);
@@ -253,6 +265,12 @@ static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie)
 
 extern void            dst_init(void);
 
+/* Flags for xfrm_lookup flags argument. */
+enum {
+       XFRM_LOOKUP_WAIT = 1 << 0,
+       XFRM_LOOKUP_ICMP = 1 << 1,
+};
+
 struct flowi;
 #ifndef CONFIG_XFRM
 static inline int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
@@ -260,9 +278,16 @@ static inline int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
 {
        return 0;
 } 
+static inline int __xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
+                               struct sock *sk, int flags)
+{
+       return 0;
+}
 #else
 extern int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
                       struct sock *sk, int flags);
+extern int __xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
+                        struct sock *sk, int flags);
 #endif
 #endif