quota: drop remount argument to ->quota_on and ->quota_off
[safe/jmp/linux-2.6] / include / linux / rtnetlink.h
index 4e81836..fbc8cb0 100644 (file)
@@ -1,11 +1,19 @@
 #ifndef __LINUX_RTNETLINK_H
 #define __LINUX_RTNETLINK_H
 
+#include <linux/types.h>
 #include <linux/netlink.h>
 #include <linux/if_link.h>
 #include <linux/if_addr.h>
 #include <linux/neighbour.h>
 
+/* rtnetlink families. Values up to 127 are reserved for real address
+ * families, values above 128 may be used arbitrarily.
+ */
+#define RTNL_FAMILY_IPMR               128
+#define RTNL_FAMILY_IP6MR              129
+#define RTNL_FAMILY_MAX                        129
+
 /****
  *             Routing/neighbour discovery messages.
  ****/
@@ -100,6 +108,18 @@ enum {
        RTM_NEWNDUSEROPT = 68,
 #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
 
+       RTM_NEWADDRLABEL = 72,
+#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
+       RTM_DELADDRLABEL,
+#define RTM_DELADDRLABEL RTM_DELADDRLABEL
+       RTM_GETADDRLABEL,
+#define RTM_GETADDRLABEL RTM_GETADDRLABEL
+
+       RTM_GETDCB = 78,
+#define RTM_GETDCB RTM_GETDCB
+       RTM_SETDCB,
+#define RTM_SETDCB RTM_SETDCB
+
        __RTM_MAX,
 #define RTM_MAX                (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -114,8 +134,7 @@ enum {
    with attribute type.
  */
 
-struct rtattr
-{
+struct rtattr {
        unsigned short  rta_len;
        unsigned short  rta_type;
 };
@@ -141,8 +160,7 @@ struct rtattr
  *             Definitions used in routing table administration.
  ****/
 
-struct rtmsg
-{
+struct rtmsg {
        unsigned char           rtm_family;
        unsigned char           rtm_dst_len;
        unsigned char           rtm_src_len;
@@ -158,8 +176,7 @@ struct rtmsg
 
 /* rtm_type */
 
-enum
-{
+enum {
        RTN_UNSPEC,
        RTN_UNICAST,            /* Gateway or direct route      */
        RTN_LOCAL,              /* Accept locally               */
@@ -204,6 +221,7 @@ enum
 #define RTPROT_DNROUTED        13      /* DECnet routing daemon */
 #define RTPROT_XORP    14      /* XORP */
 #define RTPROT_NTK     15      /* Netsukuku */
+#define RTPROT_DHCP    16      /* DHCP client */
 
 /* rtm_scope
 
@@ -216,8 +234,7 @@ enum
    could be assigned a value between UNIVERSE and LINK.
 */
 
-enum rt_scope_t
-{
+enum rt_scope_t {
        RT_SCOPE_UNIVERSE=0,
 /* User defined values  */
        RT_SCOPE_SITE=200,
@@ -235,10 +252,10 @@ enum rt_scope_t
 
 /* Reserved table identifiers */
 
-enum rt_class_t
-{
+enum rt_class_t {
        RT_TABLE_UNSPEC=0,
 /* User defined values */
+       RT_TABLE_COMPAT=252,
        RT_TABLE_DEFAULT=253,
        RT_TABLE_MAIN=254,
        RT_TABLE_LOCAL=255,
@@ -248,8 +265,7 @@ enum rt_class_t
 
 /* Routing message attributes */
 
-enum rtattr_type_t
-{
+enum rtattr_type_t {
        RTA_UNSPEC,
        RTA_DST,
        RTA_SRC,
@@ -260,10 +276,10 @@ enum rtattr_type_t
        RTA_PREFSRC,
        RTA_METRICS,
        RTA_MULTIPATH,
-       RTA_PROTOINFO,
+       RTA_PROTOINFO, /* no longer used */
        RTA_FLOW,
        RTA_CACHEINFO,
-       RTA_SESSION,
+       RTA_SESSION, /* no longer used */
        RTA_MP_ALGO, /* no longer used */
        RTA_TABLE,
        __RTA_MAX
@@ -283,8 +299,7 @@ enum rtattr_type_t
  * and rtt for different paths from multipath.
  */
 
-struct rtnexthop
-{
+struct rtnexthop {
        unsigned short          rtnh_len;
        unsigned char           rtnh_flags;
        unsigned char           rtnh_hops;
@@ -310,8 +325,7 @@ struct rtnexthop
 
 /* RTM_CACHEINFO */
 
-struct rta_cacheinfo
-{
+struct rta_cacheinfo {
        __u32   rta_clntref;
        __u32   rta_lastuse;
        __s32   rta_expires;
@@ -326,8 +340,7 @@ struct rta_cacheinfo
 
 /* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
 
-enum
-{
+enum {
        RTAX_UNSPEC,
 #define RTAX_UNSPEC RTAX_UNSPEC
        RTAX_LOCK,
@@ -356,6 +369,8 @@ enum
 #define RTAX_FEATURES RTAX_FEATURES
        RTAX_RTO_MIN,
 #define RTAX_RTO_MIN RTAX_RTO_MIN
+       RTAX_INITRWND,
+#define RTAX_INITRWND RTAX_INITRWND
        __RTAX_MAX
 };
 
@@ -366,8 +381,7 @@ enum
 #define RTAX_FEATURE_TIMESTAMP 0x00000004
 #define RTAX_FEATURE_ALLFRAG   0x00000008
 
-struct rta_session
-{
+struct rta_session {
        __u8    proto;
        __u8    pad1;
        __u16   pad2;
@@ -392,8 +406,7 @@ struct rta_session
  *             General form of address family dependent message.
  ****/
 
-struct rtgenmsg
-{
+struct rtgenmsg {
        unsigned char           rtgen_family;
 };
 
@@ -406,8 +419,7 @@ struct rtgenmsg
  * on network protocol.
  */
 
-struct ifinfomsg
-{
+struct ifinfomsg {
        unsigned char   ifi_family;
        unsigned char   __ifi_pad;
        unsigned short  ifi_type;               /* ARPHRD_* */
@@ -420,8 +432,7 @@ struct ifinfomsg
  *             prefix information 
  ****/
 
-struct prefixmsg
-{
+struct prefixmsg {
        unsigned char   prefix_family;
        unsigned char   prefix_pad1;
        unsigned short  prefix_pad2;
@@ -442,8 +453,7 @@ enum
 
 #define PREFIX_MAX     (__PREFIX_MAX - 1)
 
-struct prefix_cacheinfo
-{
+struct prefix_cacheinfo {
        __u32   preferred_time;
        __u32   valid_time;
 };
@@ -453,8 +463,7 @@ struct prefix_cacheinfo
  *             Traffic control messages.
  ****/
 
-struct tcmsg
-{
+struct tcmsg {
        unsigned char   tcm_family;
        unsigned char   tcm__pad1;
        unsigned short  tcm__pad2;
@@ -464,8 +473,7 @@ struct tcmsg
        __u32           tcm_info;
 };
 
-enum
-{
+enum {
        TCA_UNSPEC,
        TCA_KIND,
        TCA_OPTIONS,
@@ -474,6 +482,7 @@ enum
        TCA_RATE,
        TCA_FCNT,
        TCA_STATS2,
+       TCA_STAB,
        __TCA_MAX
 };
 
@@ -486,8 +495,7 @@ enum
  *             Neighbor Discovery userland options
  ****/
 
-struct nduseroptmsg
-{
+struct nduseroptmsg {
        unsigned char   nduseropt_family;
        unsigned char   nduseropt_pad1;
        unsigned short  nduseropt_opts_len;     /* Total length of options */
@@ -499,8 +507,7 @@ struct nduseroptmsg
        /* Followed by one or more ND options */
 };
 
-enum
-{
+enum {
        NDUSEROPT_UNSPEC,
        NDUSEROPT_SRCADDR,
        __NDUSEROPT_MAX
@@ -573,13 +580,16 @@ enum rtnetlink_groups {
 #define RTNLGRP_IPV6_RULE      RTNLGRP_IPV6_RULE
        RTNLGRP_ND_USEROPT,
 #define RTNLGRP_ND_USEROPT     RTNLGRP_ND_USEROPT
+       RTNLGRP_PHONET_IFADDR,
+#define RTNLGRP_PHONET_IFADDR  RTNLGRP_PHONET_IFADDR
+       RTNLGRP_PHONET_ROUTE,
+#define RTNLGRP_PHONET_ROUTE   RTNLGRP_PHONET_ROUTE
        __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX    (__RTNLGRP_MAX - 1)
 
 /* TC action piece */
-struct tcamsg
-{
+struct tcamsg {
        unsigned char   tca_family;
        unsigned char   tca__pad1;
        unsigned short  tca__pad2;
@@ -595,29 +605,17 @@ struct tcamsg
 
 #include <linux/mutex.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)
 {
        int len = strlen(str) + 1;
        return len > rta->rta_len || memcmp(RTA_DATA(rta), str, len);
 }
 
-extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len);
-extern int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr,
-                                       struct rtattr *rta, int len);
-
-#define rtattr_parse_nested(tb, max, rta) \
-       rtattr_parse((tb), (max), RTA_DATA((rta)), RTA_PAYLOAD((rta)))
-
-#define rtattr_parse_nested_compat(tb, max, rta, data, len) \
-({     data = RTA_PAYLOAD(rta) >= len ? RTA_DATA(rta) : NULL; \
-       __rtattr_parse_nested_compat(tb, max, rta, len); })
-
-extern int rtnetlink_send(struct sk_buff *skb, u32 pid, u32 group, int echo);
-extern int rtnl_unicast(struct sk_buff *skb, u32 pid);
-extern int rtnl_notify(struct sk_buff *skb, u32 pid, u32 group,
-                      struct nlmsghdr *nlh, gfp_t flags);
-extern void rtnl_set_sk_err(u32 group, int error);
+extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo);
+extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid);
+extern void rtnl_notify(struct sk_buff *skb, struct net *net, u32 pid,
+                       u32 group, struct nlmsghdr *nlh, gfp_t flags);
+extern void rtnl_set_sk_err(struct net *net, u32 group, int error);
 extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics);
 extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst,
                              u32 id, u32 ts, u32 tsage, long expires,
@@ -745,26 +743,22 @@ extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change);
 extern void rtnl_lock(void);
 extern void rtnl_unlock(void);
 extern int rtnl_trylock(void);
+extern int rtnl_is_locked(void);
+#ifdef CONFIG_PROVE_LOCKING
+extern int lockdep_rtnl_is_held(void);
+#endif /* #ifdef CONFIG_PROVE_LOCKING */
 
 extern void rtnetlink_init(void);
 extern void __rtnl_unlock(void);
 
 #define ASSERT_RTNL() do { \
-       if (unlikely(rtnl_trylock())) { \
-               rtnl_unlock(); \
+       if (unlikely(!rtnl_is_locked())) { \
                printk(KERN_ERR "RTNL: assertion failed at %s (%d)\n", \
                       __FILE__,  __LINE__); \
                dump_stack(); \
        } \
 } while(0)
 
-#define BUG_TRAP(x) do { \
-       if (unlikely(!(x))) { \
-               printk(KERN_ERR "KERNEL: assertion (%s) failed at %s (%d)\n", \
-                       #x,  __FILE__ , __LINE__); \
-       } \
-} while(0)
-
 static inline u32 rtm_get_table(struct rtattr **rta, u8 table)
 {
        return RTA_GET_U32(rta[RTA_TABLE-1]);