2874c5fd28
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Network event notifiers
|
|
*
|
|
* Authors:
|
|
* Tom Tucker <tom@opengridcomputing.com>
|
|
* Steve Wise <swise@opengridcomputing.com>
|
|
*
|
|
* Fixes:
|
|
*/
|
|
|
|
#include <linux/rtnetlink.h>
|
|
#include <linux/notifier.h>
|
|
#include <linux/export.h>
|
|
#include <net/netevent.h>
|
|
|
|
static ATOMIC_NOTIFIER_HEAD(netevent_notif_chain);
|
|
|
|
/**
|
|
* register_netevent_notifier - register a netevent notifier block
|
|
* @nb: notifier
|
|
*
|
|
* Register a notifier to be called when a netevent occurs.
|
|
* The notifier passed is linked into the kernel structures and must
|
|
* not be reused until it has been unregistered. A negative errno code
|
|
* is returned on a failure.
|
|
*/
|
|
int register_netevent_notifier(struct notifier_block *nb)
|
|
{
|
|
return atomic_notifier_chain_register(&netevent_notif_chain, nb);
|
|
}
|
|
EXPORT_SYMBOL_GPL(register_netevent_notifier);
|
|
|
|
/**
|
|
* netevent_unregister_notifier - unregister a netevent notifier block
|
|
* @nb: notifier
|
|
*
|
|
* Unregister a notifier previously registered by
|
|
* register_neigh_notifier(). The notifier is unlinked into the
|
|
* kernel structures and may then be reused. A negative errno code
|
|
* is returned on a failure.
|
|
*/
|
|
|
|
int unregister_netevent_notifier(struct notifier_block *nb)
|
|
{
|
|
return atomic_notifier_chain_unregister(&netevent_notif_chain, nb);
|
|
}
|
|
EXPORT_SYMBOL_GPL(unregister_netevent_notifier);
|
|
|
|
/**
|
|
* call_netevent_notifiers - call all netevent notifier blocks
|
|
* @val: value passed unmodified to notifier function
|
|
* @v: pointer passed unmodified to notifier function
|
|
*
|
|
* Call all neighbour notifier blocks. Parameters and return value
|
|
* are as for notifier_call_chain().
|
|
*/
|
|
|
|
int call_netevent_notifiers(unsigned long val, void *v)
|
|
{
|
|
return atomic_notifier_call_chain(&netevent_notif_chain, val, v);
|
|
}
|
|
EXPORT_SYMBOL_GPL(call_netevent_notifiers);
|