Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[pandora-kernel.git] / include / linux / rtnetlink.h
index 9750f02..3a18add 100644 (file)
@@ -2,7 +2,7 @@
 #define __LINUX_RTNETLINK_H
 
 #include <linux/netlink.h>
-#include <linux/if.h>
+#include <linux/if_link.h>
 
 /****
  *             Routing/neighbour discovery messages.
@@ -239,10 +239,8 @@ enum rt_class_t
        RT_TABLE_DEFAULT=253,
        RT_TABLE_MAIN=254,
        RT_TABLE_LOCAL=255,
-       __RT_TABLE_MAX
+       RT_TABLE_MAX=0xFFFFFFFF
 };
-#define RT_TABLE_MAX (__RT_TABLE_MAX - 1)
-
 
 
 /* Routing message attributes */
@@ -264,6 +262,7 @@ enum rtattr_type_t
        RTA_CACHEINFO,
        RTA_SESSION,
        RTA_MP_ALGO,
+       RTA_TABLE,
        __RTA_MAX
 };
 
@@ -384,107 +383,6 @@ struct rta_session
        } u;
 };
 
-
-
-/*****************************************************************
- *             Neighbour tables specific messages.
- *
- * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
- * NLM_F_DUMP flag set. Every neighbour table configuration is
- * spread over multiple messages to avoid running into message
- * size limits on systems with many interfaces. The first message
- * in the sequence transports all not device specific data such as
- * statistics, configuration, and the default parameter set.
- * This message is followed by 0..n messages carrying device
- * specific parameter sets.
- * Although the ordering should be sufficient, NDTA_NAME can be
- * used to identify sequences. The initial message can be identified
- * by checking for NDTA_CONFIG. The device specific messages do
- * not contain this TLV but have NDTPA_IFINDEX set to the
- * corresponding interface index.
- *
- * To change neighbour table attributes, send RTM_SETNEIGHTBL
- * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
- * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
- * otherwise. Device specific parameter sets can be changed by
- * setting NDTPA_IFINDEX to the interface index of the corresponding
- * device.
- ****/
-
-struct ndt_stats
-{
-       __u64           ndts_allocs;
-       __u64           ndts_destroys;
-       __u64           ndts_hash_grows;
-       __u64           ndts_res_failed;
-       __u64           ndts_lookups;
-       __u64           ndts_hits;
-       __u64           ndts_rcv_probes_mcast;
-       __u64           ndts_rcv_probes_ucast;
-       __u64           ndts_periodic_gc_runs;
-       __u64           ndts_forced_gc_runs;
-};
-
-enum {
-       NDTPA_UNSPEC,
-       NDTPA_IFINDEX,                  /* u32, unchangeable */
-       NDTPA_REFCNT,                   /* u32, read-only */
-       NDTPA_REACHABLE_TIME,           /* u64, read-only, msecs */
-       NDTPA_BASE_REACHABLE_TIME,      /* u64, msecs */
-       NDTPA_RETRANS_TIME,             /* u64, msecs */
-       NDTPA_GC_STALETIME,             /* u64, msecs */
-       NDTPA_DELAY_PROBE_TIME,         /* u64, msecs */
-       NDTPA_QUEUE_LEN,                /* u32 */
-       NDTPA_APP_PROBES,               /* u32 */
-       NDTPA_UCAST_PROBES,             /* u32 */
-       NDTPA_MCAST_PROBES,             /* u32 */
-       NDTPA_ANYCAST_DELAY,            /* u64, msecs */
-       NDTPA_PROXY_DELAY,              /* u64, msecs */
-       NDTPA_PROXY_QLEN,               /* u32 */
-       NDTPA_LOCKTIME,                 /* u64, msecs */
-       __NDTPA_MAX
-};
-#define NDTPA_MAX (__NDTPA_MAX - 1)
-
-struct ndtmsg
-{
-       __u8            ndtm_family;
-       __u8            ndtm_pad1;
-       __u16           ndtm_pad2;
-};
-
-struct ndt_config
-{
-       __u16           ndtc_key_len;
-       __u16           ndtc_entry_size;
-       __u32           ndtc_entries;
-       __u32           ndtc_last_flush;        /* delta to now in msecs */
-       __u32           ndtc_last_rand;         /* delta to now in msecs */
-       __u32           ndtc_hash_rnd;
-       __u32           ndtc_hash_mask;
-       __u32           ndtc_hash_chain_gc;
-       __u32           ndtc_proxy_qlen;
-};
-
-enum {
-       NDTA_UNSPEC,
-       NDTA_NAME,                      /* char *, unchangeable */
-       NDTA_THRESH1,                   /* u32 */
-       NDTA_THRESH2,                   /* u32 */
-       NDTA_THRESH3,                   /* u32 */
-       NDTA_CONFIG,                    /* struct ndt_config, read-only */
-       NDTA_PARMS,                     /* nested TLV NDTPA_* */
-       NDTA_STATS,                     /* struct ndt_stats, read-only */
-       NDTA_GC_INTERVAL,               /* u64, msecs */
-       __NDTA_MAX
-};
-#define NDTA_MAX (__NDTA_MAX - 1)
-
-#define NDTA_RTA(r) ((struct rtattr*)(((char*)(r)) + \
-                    NLMSG_ALIGN(sizeof(struct ndtmsg))))
-#define NDTA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndtmsg))
-
-
 /****
  *             General form of address family dependent message.
  ****/
@@ -635,7 +533,8 @@ enum rtnetlink_groups {
        RTNLGRP_NOP2,
        RTNLGRP_DECnet_ROUTE,
 #define RTNLGRP_DECnet_ROUTE   RTNLGRP_DECnet_ROUTE
-       RTNLGRP_NOP3,
+       RTNLGRP_DECnet_RULE,
+#define RTNLGRP_DECnet_RULE    RTNLGRP_DECnet_RULE
        RTNLGRP_NOP4,
        RTNLGRP_IPV6_PREFIX,
 #define RTNLGRP_IPV6_PREFIX    RTNLGRP_IPV6_PREFIX
@@ -675,8 +574,6 @@ extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, in
 #define rtattr_parse_nested(tb, max, rta) \
        rtattr_parse((tb), (max), RTA_DATA((rta)), RTA_PAYLOAD((rta)))
 
-extern struct sock *rtnl;
-
 struct rtnetlink_link
 {
        int (*doit)(struct sk_buff *, struct nlmsghdr*, void *attr);
@@ -685,6 +582,10 @@ struct rtnetlink_link
 
 extern struct rtnetlink_link * rtnetlink_links[NPROTO];
 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_put_metrics(struct sk_buff *skb, u32 *metrics);
 
 extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data);
@@ -817,6 +718,13 @@ extern void __rtnl_unlock(void);
        } \
 } while(0)
 
+static inline u32 rtm_get_table(struct rtattr **rta, u8 table)
+{
+       return RTA_GET_U32(rta[RTA_TABLE-1]);
+rtattr_failure:
+       return table;
+}
+
 #endif /* __KERNEL__ */