diff options
author | Jamal Hadi Salim <hadi@cyberus.ca> | 2006-12-01 23:07:42 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-03 00:32:09 -0500 |
commit | a4d1366d5080fcb4514db58c320b9f60d78918e6 (patch) | |
tree | 8358724419b81add4a32e70d9bdcc4676ccd531e | |
parent | c40a27f48ceee648e9cfdda040b69e7010d9f82c (diff) |
[GENETLINK]: Add cmd dump completion.
Remove assumption that generic netlink commands cannot have dump
completion callbacks.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/genetlink.h | 2 | ||||
-rw-r--r-- | net/netlink/genetlink.c | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/include/net/genetlink.h b/include/net/genetlink.h index 7fd131c9a8cc..adff4c898d50 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h | |||
@@ -53,6 +53,7 @@ struct genl_info | |||
53 | * @policy: attribute validation policy | 53 | * @policy: attribute validation policy |
54 | * @doit: standard command callback | 54 | * @doit: standard command callback |
55 | * @dumpit: callback for dumpers | 55 | * @dumpit: callback for dumpers |
56 | * @done: completion callback for dumps | ||
56 | * @ops_list: operations list | 57 | * @ops_list: operations list |
57 | */ | 58 | */ |
58 | struct genl_ops | 59 | struct genl_ops |
@@ -64,6 +65,7 @@ struct genl_ops | |||
64 | struct genl_info *info); | 65 | struct genl_info *info); |
65 | int (*dumpit)(struct sk_buff *skb, | 66 | int (*dumpit)(struct sk_buff *skb, |
66 | struct netlink_callback *cb); | 67 | struct netlink_callback *cb); |
68 | int (*done)(struct netlink_callback *cb); | ||
67 | struct list_head ops_list; | 69 | struct list_head ops_list; |
68 | }; | 70 | }; |
69 | 71 | ||
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index cc874f0fcbdb..b9b03747c1f3 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c | |||
@@ -331,7 +331,7 @@ static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
331 | } | 331 | } |
332 | 332 | ||
333 | *errp = err = netlink_dump_start(genl_sock, skb, nlh, | 333 | *errp = err = netlink_dump_start(genl_sock, skb, nlh, |
334 | ops->dumpit, NULL); | 334 | ops->dumpit, ops->done); |
335 | if (err == 0) | 335 | if (err == 0) |
336 | skb_pull(skb, min(NLMSG_ALIGN(nlh->nlmsg_len), | 336 | skb_pull(skb, min(NLMSG_ALIGN(nlh->nlmsg_len), |
337 | skb->len)); | 337 | skb->len)); |