2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-21 14:49:41 +00:00

notifiers: Create and destroy nln_notifiers.

This patch changes the interface of netlink-notifier and
rtnetlink-link.  Now nln_notifiers are allocated and destroyed by
the module instead of passed in by callers.  This allows the
definition of nln_notifier to be hidden, and generally cleans up
the code.
This commit is contained in:
Ethan Jackson
2011-09-15 11:21:23 -07:00
parent 18a2378164
commit 2ee6545f2b
8 changed files with 81 additions and 62 deletions

View File

@@ -85,25 +85,24 @@ rtnetlink_link_parse_cb(struct ofpbuf *buf, void *change)
* using dpif_port_poll() or netdev_change_seq(), which unlike this function
* are not Linux-specific.
*
* Returns 0 if successful, otherwise a positive errno value. */
int
rtnetlink_link_notifier_register(struct nln_notifier *notifier,
rtnetlink_link_notify_func *cb, void *aux)
* Returns an initialized nln_notifier if successful, NULL otherwise. */
struct nln_notifier *
rtnetlink_link_notifier_create(rtnetlink_link_notify_func *cb, void *aux)
{
if (!nln) {
nln = nln_create(NETLINK_ROUTE, RTNLGRP_LINK, rtnetlink_link_parse_cb,
&rtn_change);
}
return nln_notifier_register(nln, notifier, (nln_notify_func *) cb, aux);
return nln_notifier_create(nln, (nln_notify_func *) cb, aux);
}
/* Cancels notification on 'notifier', which must have previously been
* registered with rtnetlink_link_notifier_register(). */
/* Destroys 'notifier', which must have previously been created with
* rtnetlink_link_notifier_register(). */
void
rtnetlink_link_notifier_unregister(struct nln_notifier *notifier)
rtnetlink_link_notifier_destroy(struct nln_notifier *notifier)
{
nln_notifier_unregister(nln, notifier);
nln_notifier_destroy(notifier);
}
/* Calls all of the registered notifiers, passing along any as-yet-unreported