diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-15 12:40:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-15 12:40:05 -0400 |
commit | 2ed0e21b30b53d3a94e204196e523e6c8f732b56 (patch) | |
tree | de2635426477d86338a9469ce09ba0626052288f /net/netlink/genetlink.c | |
parent | 0fa213310cd8fa7a51071cdcf130e26fa56e9549 (diff) | |
parent | 9cbc1cb8cd46ce1f7645b9de249b2ce8460129bb (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1244 commits)
pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US
ipv4: Fix fib_trie rebalancing
Bluetooth: Fix issue with uninitialized nsh.type in DTL-1 driver
Bluetooth: Fix Kconfig issue with RFKILL integration
PIM-SM: namespace changes
ipv4: update ARPD help text
net: use a deferred timer in rt_check_expire
ieee802154: fix kconfig bool/tristate muckup
bonding: initialization rework
bonding: use is_zero_ether_addr
bonding: network device names are case sensative
bonding: elminate bad refcount code
bonding: fix style issues
bonding: fix destructor
bonding: remove bonding read/write semaphore
bonding: initialize before registration
bonding: bond_create always called with default parameters
x_tables: Convert printk to pr_err
netfilter: conntrack: optional reliable conntrack event delivery
list_nulls: add hlist_nulls_add_head and hlist_nulls_del
...
Diffstat (limited to 'net/netlink/genetlink.c')
-rw-r--r-- | net/netlink/genetlink.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index 1d3dd30099df..eed4c6a8afc0 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c | |||
@@ -384,6 +384,52 @@ errout: | |||
384 | } | 384 | } |
385 | 385 | ||
386 | /** | 386 | /** |
387 | * genl_register_family_with_ops - register a generic netlink family | ||
388 | * @family: generic netlink family | ||
389 | * @ops: operations to be registered | ||
390 | * @n_ops: number of elements to register | ||
391 | * | ||
392 | * Registers the specified family and operations from the specified table. | ||
393 | * Only one family may be registered with the same family name or identifier. | ||
394 | * | ||
395 | * The family id may equal GENL_ID_GENERATE causing an unique id to | ||
396 | * be automatically generated and assigned. | ||
397 | * | ||
398 | * Either a doit or dumpit callback must be specified for every registered | ||
399 | * operation or the function will fail. Only one operation structure per | ||
400 | * command identifier may be registered. | ||
401 | * | ||
402 | * See include/net/genetlink.h for more documenation on the operations | ||
403 | * structure. | ||
404 | * | ||
405 | * This is equivalent to calling genl_register_family() followed by | ||
406 | * genl_register_ops() for every operation entry in the table taking | ||
407 | * care to unregister the family on error path. | ||
408 | * | ||
409 | * Return 0 on success or a negative error code. | ||
410 | */ | ||
411 | int genl_register_family_with_ops(struct genl_family *family, | ||
412 | struct genl_ops *ops, size_t n_ops) | ||
413 | { | ||
414 | int err, i; | ||
415 | |||
416 | err = genl_register_family(family); | ||
417 | if (err) | ||
418 | return err; | ||
419 | |||
420 | for (i = 0; i < n_ops; ++i, ++ops) { | ||
421 | err = genl_register_ops(family, ops); | ||
422 | if (err) | ||
423 | goto err_out; | ||
424 | } | ||
425 | return 0; | ||
426 | err_out: | ||
427 | genl_unregister_family(family); | ||
428 | return err; | ||
429 | } | ||
430 | EXPORT_SYMBOL(genl_register_family_with_ops); | ||
431 | |||
432 | /** | ||
387 | * genl_unregister_family - unregister generic netlink family | 433 | * genl_unregister_family - unregister generic netlink family |
388 | * @family: generic netlink family | 434 | * @family: generic netlink family |
389 | * | 435 | * |