]> err.no Git - linux-2.6/blobdiff - include/linux/netlink.h
Merge HEAD from ../scsi-misc-2.6-tmp
[linux-2.6] / include / linux / netlink.h
index b2738ac8bc999f30c0840f318c5da73d95214fed..6552b71bfa73cdc69ade8d12b8cb2fbb1f1f0955 100644 (file)
@@ -5,20 +5,20 @@
 #include <linux/types.h>
 
 #define NETLINK_ROUTE          0       /* Routing/device hook                          */
-#define NETLINK_SKIP           1       /* Reserved for ENskip                          */
+#define NETLINK_W1             1       /* 1-wire subsystem                             */
 #define NETLINK_USERSOCK       2       /* Reserved for user mode socket protocols      */
 #define NETLINK_FIREWALL       3       /* Firewalling hook                             */
 #define NETLINK_TCPDIAG                4       /* TCP socket monitoring                        */
 #define NETLINK_NFLOG          5       /* netfilter/iptables ULOG */
 #define NETLINK_XFRM           6       /* ipsec */
 #define NETLINK_SELINUX                7       /* SELinux event notifications */
-#define NETLINK_ARPD           8
+#define NETLINK_ISCSI          8       /* Open-iSCSI */
 #define NETLINK_AUDIT          9       /* auditing */
-#define NETLINK_ROUTE6         11      /* af_inet6 route comm channel */
+#define NETLINK_FIB_LOOKUP     10      
+#define NETLINK_NETFILTER      12      /* netfilter subsystem */
 #define NETLINK_IP6_FW         13
 #define NETLINK_DNRTMSG                14      /* DECnet routing messages */
 #define NETLINK_KOBJECT_UEVENT 15      /* Kernel messages to userspace */
-#define NETLINK_TAPBASE                16      /* 16 to 31 are ethertap */
 
 #define MAX_LINKS 32           
 
@@ -146,7 +146,7 @@ struct netlink_callback
        int             (*dump)(struct sk_buff * skb, struct netlink_callback *cb);
        int             (*done)(struct netlink_callback *cb);
        int             family;
-       long            args[4];
+       long            args[5];
 };
 
 struct netlink_notify
@@ -156,7 +156,7 @@ struct netlink_notify
 };
 
 static __inline__ struct nlmsghdr *
-__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len)
+__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags)
 {
        struct nlmsghdr *nlh;
        int size = NLMSG_LENGTH(len);
@@ -164,15 +164,32 @@ __nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len)
        nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size));
        nlh->nlmsg_type = type;
        nlh->nlmsg_len = size;
-       nlh->nlmsg_flags = 0;
+       nlh->nlmsg_flags = flags;
        nlh->nlmsg_pid = pid;
        nlh->nlmsg_seq = seq;
+       memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size);
        return nlh;
 }
 
+#define NLMSG_NEW(skb, pid, seq, type, len, flags) \
+({     if (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) \
-({ if (skb_tailroom(skb) < (int)NLMSG_SPACE(len)) goto nlmsg_failure; \
-   __nlmsg_put(skb, pid, seq, type, len); })
+       NLMSG_NEW(skb, pid, seq, type, len, 0)
+
+#define NLMSG_NEW_ANSWER(skb, cb, type, len, flags) \
+       NLMSG_NEW(skb, NETLINK_CB((cb)->skb).pid, \
+                 (cb)->nlh->nlmsg_seq, type, len, flags)
+
+#define NLMSG_END(skb, nlh) \
+({     (nlh)->nlmsg_len = (skb)->tail - (unsigned char *) (nlh); \
+       (skb)->len; })
+
+#define NLMSG_CANCEL(skb, nlh) \
+({     skb_trim(skb, (unsigned char *) (nlh) - (skb)->data); \
+       -1; })
 
 extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
                              struct nlmsghdr *nlh,