struct nlattr *attrs[]);
static void rtnetlink_report_notify_error(void);
+/* Registers 'cb' to be called with auxiliary data 'aux' with network device
+ * change notifications. The notifier is stored in 'notifier', which the
+ * caller must not modify or free.
+ *
+ * This is probably not the function that you want. You should probably be
+ * using dpif_port_poll() or netdev_monitor_create(), which unlike this
+ * function are not Linux-specific.
+ *
+ * Returns 0 if successful, otherwise a positive errno value. */
int
rtnetlink_notifier_register(struct rtnetlink_notifier *notifier,
rtnetlink_notify_func *cb, void *aux)
return 0;
}
+/* Cancels notification on 'notifier', which must have previously been
+ * registered with lxnetdev_notifier_register(). */
void
rtnetlink_notifier_unregister(struct rtnetlink_notifier *notifier)
{
}
}
+/* Calls all of the registered notifiers, passing along any as-yet-unreported
+ * netdev change events. */
void
rtnetlink_notifier_run(void)
{
}
}
+/* Causes poll_block() to wake up when network device change notifications are
+ * ready. */
void
rtnetlink_notifier_wait(void)
{
#include "list.h"
+/* A digested version of an rtnetlink message sent down by the kernel to
+ * indicate that a network device has been created or destroyed or changed. */
struct rtnetlink_change {
/* Copied from struct nlmsghdr. */
int nlmsg_type; /* e.g. RTM_NEWLINK, RTM_DELLINK. */
int master_ifindex; /* Ifindex of datapath master (0 if none). */
};
-typedef void rtnetlink_notify_func(const struct rtnetlink_change *,
- void *aux);
+/* Function called to report that a netdev has changed. 'change' describes the
+ * specific change. It may be null if the buffer of change information
+ * overflowed, in which case the function must assume that every device may
+ * have changed. 'aux' is as specified in the call to
+ * lxnetdev_notifier_register(). */
+typedef void rtnetlink_notify_func(const struct rtnetlink_change *, void *aux);
struct rtnetlink_notifier {
struct list node;