]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/blobdiff - include/linux/netlink.h
Update headers to 3.5 merge window
[lisovros/iproute2_canprio.git] / include / linux / netlink.h
index 5ba398e90304d5e0f8e8a77af50038f9d91dd919..830923b7e53a33fd4558dc3a95579d881f69aa43 100644 (file)
@@ -1,14 +1,14 @@
 #ifndef __LINUX_NETLINK_H
 #define __LINUX_NETLINK_H
 
-#include <linux/socket.h> /* for sa_family_t */
+#include <linux/socket.h> /* for __kernel_sa_family_t */
 #include <linux/types.h>
 
 #define NETLINK_ROUTE          0       /* Routing/device hook                          */
 #define NETLINK_UNUSED         1       /* Unused number                                */
 #define NETLINK_USERSOCK       2       /* Reserved for user mode socket protocols      */
-#define NETLINK_FIREWALL       3       /* Firewalling hook                             */
-#define NETLINK_INET_DIAG      4       /* INET socket monitoring                       */
+#define NETLINK_FIREWALL       3       /* Unused number, formerly ip_queue             */
+#define NETLINK_SOCK_DIAG      4       /* socket monitoring                            */
 #define NETLINK_NFLOG          5       /* netfilter/iptables ULOG */
 #define NETLINK_XFRM           6       /* ipsec */
 #define NETLINK_SELINUX                7       /* SELinux event notifications */
 /* leave room for NETLINK_DM (DM Events) */
 #define NETLINK_SCSITRANSPORT  18      /* SCSI Transports */
 #define NETLINK_ECRYPTFS       19
+#define NETLINK_RDMA           20
+#define NETLINK_CRYPTO         21      /* Crypto layer */
 
-#define MAX_LINKS 32           
+#define NETLINK_INET_DIAG      NETLINK_SOCK_DIAG
 
-struct net;
+#define MAX_LINKS 32           
 
-struct sockaddr_nl
-{
-       sa_family_t     nl_family;      /* AF_NETLINK   */
+struct sockaddr_nl {
+       __kernel_sa_family_t    nl_family;      /* AF_NETLINK   */
        unsigned short  nl_pad;         /* zero         */
        __u32           nl_pid;         /* port ID      */
                __u32           nl_groups;      /* multicast groups mask */
 };
 
-struct nlmsghdr
-{
+struct nlmsghdr {
        __u32           nlmsg_len;      /* Length of message including header */
        __u16           nlmsg_type;     /* Message content */
        __u16           nlmsg_flags;    /* Additional flags */
@@ -52,6 +52,7 @@ struct nlmsghdr
 #define NLM_F_MULTI            2       /* Multipart message, terminated by NLMSG_DONE */
 #define NLM_F_ACK              4       /* Reply with ack, with zero or error code */
 #define NLM_F_ECHO             8       /* Echo this request            */
+#define NLM_F_DUMP_INTR                16      /* Dump was inconsistent due to sequence change */
 
 /* Modifiers to GET request */
 #define NLM_F_ROOT     0x100   /* specify tree root    */
@@ -74,7 +75,7 @@ struct nlmsghdr
    Check               NLM_F_EXCL
  */
 
-#define NLMSG_ALIGNTO  4
+#define NLMSG_ALIGNTO  4U
 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
 #define NLMSG_HDRLEN    ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
 #define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN))
@@ -94,8 +95,7 @@ struct nlmsghdr
 
 #define NLMSG_MIN_TYPE         0x10    /* < 0x10: reserved control messages */
 
-struct nlmsgerr
-{
+struct nlmsgerr {
        int             error;
        struct nlmsghdr msg;
 };
@@ -106,8 +106,7 @@ struct nlmsgerr
 #define NETLINK_BROADCAST_ERROR        4
 #define NETLINK_NO_ENOBUFS     5
 
-struct nl_pktinfo
-{
+struct nl_pktinfo {
        __u32   group;
 };
 
@@ -127,8 +126,7 @@ enum {
  *  <-------------- nlattr->nla_len -------------->
  */
 
-struct nlattr
-{
+struct nlattr {
        __u16           nla_len;
        __u16           nla_type;
 };
@@ -151,122 +149,5 @@ struct nlattr
 #define NLA_ALIGN(len)         (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
 #define NLA_HDRLEN             ((int) NLA_ALIGN(sizeof(struct nlattr)))
 
-#ifdef __KERNEL__
-
-#include <linux/capability.h>
-#include <linux/skbuff.h>
-
-static inline struct nlmsghdr *nlmsg_hdr(const struct sk_buff *skb)
-{
-       return (struct nlmsghdr *)skb->data;
-}
-
-struct netlink_skb_parms
-{
-       struct ucred            creds;          /* Skb credentials      */
-       __u32                   pid;
-       __u32                   dst_group;
-       kernel_cap_t            eff_cap;
-       __u32                   loginuid;       /* Login (audit) uid */
-       __u32                   sessionid;      /* Session id (audit) */
-       __u32                   sid;            /* SELinux security id */
-};
-
-#define NETLINK_CB(skb)                (*(struct netlink_skb_parms*)&((skb)->cb))
-#define NETLINK_CREDS(skb)     (&NETLINK_CB((skb)).creds)
-
-
-extern struct sock *netlink_kernel_create(struct net *net,
-                                         int unit,unsigned int groups,
-                                         void (*input)(struct sk_buff *skb),
-                                         struct mutex *cb_mutex,
-                                         struct module *module);
-extern void netlink_kernel_release(struct sock *sk);
-extern int netlink_change_ngroups(struct sock *sk, unsigned int groups);
-extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group);
-extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err);
-extern int netlink_has_listeners(struct sock *sk, unsigned int group);
-extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock);
-extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid,
-                            __u32 group, gfp_t allocation);
-extern void netlink_set_err(struct sock *ssk, __u32 pid, __u32 group, int code);
-extern int netlink_register_notifier(struct notifier_block *nb);
-extern int netlink_unregister_notifier(struct notifier_block *nb);
-
-/* finegrained unicast helpers: */
-struct sock *netlink_getsockbyfilp(struct file *filp);
-int netlink_attachskb(struct sock *sk, struct sk_buff *skb,
-                     long *timeo, struct sock *ssk);
-void netlink_detachskb(struct sock *sk, struct sk_buff *skb);
-int netlink_sendskb(struct sock *sk, struct sk_buff *skb);
-
-/*
- *     skb should fit one page. This choice is good for headerless malloc.
- *     But we should limit to 8K so that userspace does not have to
- *     use enormous buffer sizes on recvmsg() calls just to avoid
- *     MSG_TRUNC when PAGE_SIZE is very large.
- */
-#if PAGE_SIZE < 8192UL
-#define NLMSG_GOODSIZE SKB_WITH_OVERHEAD(PAGE_SIZE)
-#else
-#define NLMSG_GOODSIZE SKB_WITH_OVERHEAD(8192UL)
-#endif
-
-#define NLMSG_DEFAULT_SIZE (NLMSG_GOODSIZE - NLMSG_HDRLEN)
-
-
-struct netlink_callback
-{
-       struct sk_buff  *skb;
-       struct nlmsghdr *nlh;
-       int             (*dump)(struct sk_buff * skb, struct netlink_callback *cb);
-       int             (*done)(struct netlink_callback *cb);
-       int             family;
-       long            args[6];
-};
-
-struct netlink_notify
-{
-       struct net *net;
-       int pid;
-       int protocol;
-};
-
-static __inline__ struct nlmsghdr *
-__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags)
-{
-       struct nlmsghdr *nlh;
-       int size = NLMSG_LENGTH(len);
-
-       nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size));
-       nlh->nlmsg_type = type;
-       nlh->nlmsg_len = size;
-       nlh->nlmsg_flags = flags;
-       nlh->nlmsg_pid = pid;
-       nlh->nlmsg_seq = seq;
-       if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0)
-               memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size);
-       return nlh;
-}
-
-#define NLMSG_NEW(skb, pid, seq, type, len, flags) \
-({     if (unlikely(skb_tailroom(skb) < (int)NLMSG_SPACE(len))) \
-               goto nlmsg_failure; \
-       __nlmsg_put(skb, pid, seq, type, len, flags); })
-
-#define NLMSG_PUT(skb, pid, seq, type, len) \
-       NLMSG_NEW(skb, pid, seq, type, len, 0)
-
-extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
-                             struct nlmsghdr *nlh,
-                             int (*dump)(struct sk_buff *skb, struct netlink_callback*),
-                             int (*done)(struct netlink_callback*));
-
-
-#define NL_NONROOT_RECV 0x1
-#define NL_NONROOT_SEND 0x2
-extern void netlink_set_nonroot(int protocol, unsigned flag);
-
-#endif /* __KERNEL__ */
 
 #endif /* __LINUX_NETLINK_H */