Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / include / net / ax25.h
index 69374cd..5bd9974 100644 (file)
@@ -6,6 +6,7 @@
 #ifndef _AX25_H
 #define _AX25_H 
 
+#include <linux/config.h>
 #include <linux/ax25.h>
 #include <linux/spinlock.h>
 #include <linux/timer.h>
@@ -182,26 +183,14 @@ typedef struct {
 
 typedef struct ax25_route {
        struct ax25_route       *next;
-       atomic_t                refcount;
+       atomic_t                ref;
        ax25_address            callsign;
        struct net_device       *dev;
        ax25_digi               *digipeat;
        char                    ip_mode;
+       struct timer_list       timer;
 } ax25_route;
 
-static inline void ax25_hold_route(ax25_route *ax25_rt)
-{
-       atomic_inc(&ax25_rt->refcount);
-}
-
-extern void __ax25_put_route(ax25_route *ax25_rt);
-
-static inline void ax25_put_route(ax25_route *ax25_rt)
-{
-       if (atomic_dec_and_test(&ax25_rt->refcount))
-               __ax25_put_route(ax25_rt);
-}
-
 typedef struct {
        char                    slave;                  /* slave_mode?   */
        struct timer_list       slave_timer;            /* timeout timer */
@@ -360,11 +349,17 @@ extern int  ax25_check_iframes_acked(ax25_cb *, unsigned short);
 extern void ax25_rt_device_down(struct net_device *);
 extern int  ax25_rt_ioctl(unsigned int, void __user *);
 extern struct file_operations ax25_route_fops;
-extern ax25_route *ax25_get_route(ax25_address *addr, struct net_device *dev);
 extern int  ax25_rt_autobind(ax25_cb *, ax25_address *);
+extern ax25_route *ax25_rt_find_route(ax25_route *, ax25_address *,
+       struct net_device *);
 extern struct sk_buff *ax25_rt_build_path(struct sk_buff *, ax25_address *, ax25_address *, ax25_digi *);
 extern void ax25_rt_free(void);
 
+static inline void ax25_put_route(ax25_route *ax25_rt)
+{
+       atomic_dec(&ax25_rt->ref);
+}
+
 /* ax25_std_in.c */
 extern int  ax25_std_frame_in(ax25_cb *, struct sk_buff *, int);