summary refs log tree commit diff
path: root/include/net/netlink.h
diff options
context:
space:
mode:
authorThomas Graf <tgraf@suug.ch>2006-08-15 00:31:06 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 14:54:49 -0700
commitd387f6ad10764fc2174373b4a1cca443adee36e3 (patch)
treeed22c34f55de9c668eed1727d46239f3b48599b7 /include/net/netlink.h
parent2942e90050569525628a9f34e0daaa9b661b49cc (diff)
downloadlinux-d387f6ad10764fc2174373b4a1cca443adee36e3.tar.gz
[NETLINK]: Add notification message sending interface
Adds nlmsg_notify() implementing proper notification logic. The
message is multicasted to all listeners in the group. The
applications the requests orignates from can request a unicast
back report in which case said socket will be excluded from the
multicast to avoid duplicated notifications.

nlmsg_multicast() is extended to take allocation flags to
allow notification in atomic contexts.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/netlink.h')
-rw-r--r--include/net/netlink.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/net/netlink.h b/include/net/netlink.h
index 3a5e40b1e045..b154b81d9a7a 100644
--- a/include/net/netlink.h
+++ b/include/net/netlink.h
@@ -43,6 +43,7 @@
  * Message Sending:
  *   nlmsg_multicast()			multicast message to several groups
  *   nlmsg_unicast()			unicast a message to a single socket
+ *   nlmsg_notify()			send notification message
  *
  * Message Length Calculations:
  *   nlmsg_msg_size(payload)		length of message w/o padding
@@ -545,15 +546,16 @@ static inline void nlmsg_free(struct sk_buff *skb)
  * @skb: netlink message as socket buffer
  * @pid: own netlink pid to avoid sending to yourself
  * @group: multicast group id
+ * @flags: allocation flags
  */
 static inline int nlmsg_multicast(struct sock *sk, struct sk_buff *skb,
-				  u32 pid, unsigned int group)
+				  u32 pid, unsigned int group, gfp_t flags)
 {
 	int err;
 
 	NETLINK_CB(skb).dst_group = group;
 
-	err = netlink_broadcast(sk, skb, pid, group, GFP_KERNEL);
+	err = netlink_broadcast(sk, skb, pid, group, flags);
 	if (err > 0)
 		err = 0;