]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/net/dst.h
[IPSEC]: Add ICMP host relookup support
[linux-2.6-omap-h63xx.git] / include / net / dst.h
index e12a8ce0b9b30737a39edbeaea90ba9edca76557..31468c9aa87774dae2883de50d2c72bfe645bdbc 100644 (file)
@@ -47,11 +47,9 @@ struct dst_entry
 #define DST_NOXFRM             2
 #define DST_NOPOLICY           4
 #define DST_NOHASH             8
-#define DST_BALANCED            0x10
        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];
@@ -100,6 +98,7 @@ 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;
@@ -144,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)
 {
@@ -174,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);
@@ -258,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,
@@ -265,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