diff options
author | Thomas Graf <tgraf@suug.ch> | 2006-08-15 03:31:06 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 17:54:49 -0400 |
commit | d387f6ad10764fc2174373b4a1cca443adee36e3 (patch) | |
tree | ed22c34f55de9c668eed1727d46239f3b48599b7 /include/net/netlink.h | |
parent | 2942e90050569525628a9f34e0daaa9b661b49cc (diff) |
[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.h | 6 |
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 @@ | |||
43 | * Message Sending: | 43 | * Message Sending: |
44 | * nlmsg_multicast() multicast message to several groups | 44 | * nlmsg_multicast() multicast message to several groups |
45 | * nlmsg_unicast() unicast a message to a single socket | 45 | * nlmsg_unicast() unicast a message to a single socket |
46 | * nlmsg_notify() send notification message | ||
46 | * | 47 | * |
47 | * Message Length Calculations: | 48 | * Message Length Calculations: |
48 | * nlmsg_msg_size(payload) length of message w/o padding | 49 | * nlmsg_msg_size(payload) length of message w/o padding |
@@ -545,15 +546,16 @@ static inline void nlmsg_free(struct sk_buff *skb) | |||
545 | * @skb: netlink message as socket buffer | 546 | * @skb: netlink message as socket buffer |
546 | * @pid: own netlink pid to avoid sending to yourself | 547 | * @pid: own netlink pid to avoid sending to yourself |
547 | * @group: multicast group id | 548 | * @group: multicast group id |
549 | * @flags: allocation flags | ||
548 | */ | 550 | */ |
549 | static inline int nlmsg_multicast(struct sock *sk, struct sk_buff *skb, | 551 | static inline int nlmsg_multicast(struct sock *sk, struct sk_buff *skb, |
550 | u32 pid, unsigned int group) | 552 | u32 pid, unsigned int group, gfp_t flags) |
551 | { | 553 | { |
552 | int err; | 554 | int err; |
553 | 555 | ||
554 | NETLINK_CB(skb).dst_group = group; | 556 | NETLINK_CB(skb).dst_group = group; |
555 | 557 | ||
556 | err = netlink_broadcast(sk, skb, pid, group, GFP_KERNEL); | 558 | err = netlink_broadcast(sk, skb, pid, group, flags); |
557 | if (err > 0) | 559 | if (err > 0) |
558 | err = 0; | 560 | err = 0; |
559 | 561 | ||