Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/net/core/netevent.c
26278 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
* Network event notifiers
4
*
5
* Authors:
6
* Tom Tucker <[email protected]>
7
* Steve Wise <[email protected]>
8
*
9
* Fixes:
10
*/
11
12
#include <linux/rtnetlink.h>
13
#include <linux/notifier.h>
14
#include <linux/export.h>
15
#include <net/netevent.h>
16
17
static ATOMIC_NOTIFIER_HEAD(netevent_notif_chain);
18
19
/**
20
* register_netevent_notifier - register a netevent notifier block
21
* @nb: notifier
22
*
23
* Register a notifier to be called when a netevent occurs.
24
* The notifier passed is linked into the kernel structures and must
25
* not be reused until it has been unregistered. A negative errno code
26
* is returned on a failure.
27
*/
28
int register_netevent_notifier(struct notifier_block *nb)
29
{
30
return atomic_notifier_chain_register(&netevent_notif_chain, nb);
31
}
32
EXPORT_SYMBOL_GPL(register_netevent_notifier);
33
34
/**
35
* unregister_netevent_notifier - unregister a netevent notifier block
36
* @nb: notifier
37
*
38
* Unregister a notifier previously registered by
39
* register_neigh_notifier(). The notifier is unlinked into the
40
* kernel structures and may then be reused. A negative errno code
41
* is returned on a failure.
42
*/
43
44
int unregister_netevent_notifier(struct notifier_block *nb)
45
{
46
return atomic_notifier_chain_unregister(&netevent_notif_chain, nb);
47
}
48
EXPORT_SYMBOL_GPL(unregister_netevent_notifier);
49
50
/**
51
* call_netevent_notifiers - call all netevent notifier blocks
52
* @val: value passed unmodified to notifier function
53
* @v: pointer passed unmodified to notifier function
54
*
55
* Call all neighbour notifier blocks. Parameters and return value
56
* are as for notifier_call_chain().
57
*/
58
59
int call_netevent_notifiers(unsigned long val, void *v)
60
{
61
return atomic_notifier_call_chain(&netevent_notif_chain, val, v);
62
}
63
EXPORT_SYMBOL_GPL(call_netevent_notifiers);
64
65