linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / linux / rtnetlink.h
index facd9ee..d50482b 100644 (file)
@@ -199,7 +199,6 @@ enum
 #define RTPROT_BIRD    12      /* BIRD */
 #define RTPROT_DNROUTED        13      /* DECnet routing daemon */
 #define RTPROT_XORP    14      /* XORP */
-#define RTPROT_NTK     15      /* Netsukuku */
 
 /* rtm_scope
 
@@ -734,8 +733,6 @@ enum
 #define IFLA_MAP IFLA_MAP
        IFLA_WEIGHT,
 #define IFLA_WEIGHT IFLA_WEIGHT
-       IFLA_OPERSTATE,
-       IFLA_LINKMODE,
        __IFLA_MAX
 };
 
@@ -839,7 +836,6 @@ enum
 #define RTMGRP_IPV4_IFADDR     0x10
 #define RTMGRP_IPV4_MROUTE     0x20
 #define RTMGRP_IPV4_ROUTE      0x40
-#define RTMGRP_IPV4_RULE       0x80
 
 #define RTMGRP_IPV6_IFADDR     0x100
 #define RTMGRP_IPV6_MROUTE     0x200
@@ -870,8 +866,7 @@ enum rtnetlink_groups {
 #define        RTNLGRP_IPV4_MROUTE     RTNLGRP_IPV4_MROUTE
        RTNLGRP_IPV4_ROUTE,
 #define RTNLGRP_IPV4_ROUTE     RTNLGRP_IPV4_ROUTE
-       RTNLGRP_IPV4_RULE,
-#define RTNLGRP_IPV4_RULE      RTNLGRP_IPV4_RULE
+       RTNLGRP_NOP1,
        RTNLGRP_IPV6_IFADDR,
 #define RTNLGRP_IPV6_IFADDR    RTNLGRP_IPV6_IFADDR
        RTNLGRP_IPV6_MROUTE,
@@ -909,7 +904,7 @@ struct tcamsg
 
 #ifdef __KERNEL__
 
-#include <linux/mutex.h>
+#include <linux/config.h>
 
 extern size_t rtattr_strlcpy(char *dest, const struct rtattr *rta, size_t size);
 static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str)
@@ -1041,17 +1036,24 @@ __rta_reserve(struct sk_buff *skb, int attrtype, int attrlen)
 
 extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change);
 
-/* RTNL is used as a global lock for all changes to network configuration  */
+extern struct semaphore rtnl_sem;
+
+#define rtnl_shlock()          down(&rtnl_sem)
+#define rtnl_shlock_nowait()   down_trylock(&rtnl_sem)
+
+#define rtnl_shunlock()        do { up(&rtnl_sem); \
+                            if (rtnl && rtnl->sk_receive_queue.qlen) \
+                                    rtnl->sk_data_ready(rtnl, 0); \
+                       } while(0)
+
 extern void rtnl_lock(void);
+extern int rtnl_lock_interruptible(void);
 extern void rtnl_unlock(void);
-extern int rtnl_trylock(void);
-
 extern void rtnetlink_init(void);
-extern void __rtnl_unlock(void);
 
 #define ASSERT_RTNL() do { \
-       if (unlikely(rtnl_trylock())) { \
-               rtnl_unlock(); \
+       if (unlikely(down_trylock(&rtnl_sem) == 0)) { \
+               up(&rtnl_sem); \
                printk(KERN_ERR "RTNL: assertion failed at %s (%d)\n", \
                       __FILE__,  __LINE__); \
                dump_stack(); \