]>
Commit | Line | Data |
---|---|---|
2874c5fd | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
792d1932 TT |
2 | /* |
3 | * Network event notifiers | |
4 | * | |
5 | * Authors: | |
6 | * Tom Tucker <[email protected]> | |
7 | * Steve Wise <[email protected]> | |
8 | * | |
792d1932 TT |
9 | * Fixes: |
10 | */ | |
11 | ||
12 | #include <linux/rtnetlink.h> | |
13 | #include <linux/notifier.h> | |
bc3b2d7f | 14 | #include <linux/export.h> |
94b83419 | 15 | #include <net/netevent.h> |
792d1932 TT |
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 | { | |
282c320d | 30 | return atomic_notifier_chain_register(&netevent_notif_chain, nb); |
792d1932 | 31 | } |
9e34a5b5 | 32 | EXPORT_SYMBOL_GPL(register_netevent_notifier); |
792d1932 TT |
33 | |
34 | /** | |
bb2882bc | 35 | * unregister_netevent_notifier - unregister a netevent notifier block |
792d1932 TT |
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 | } | |
9e34a5b5 | 48 | EXPORT_SYMBOL_GPL(unregister_netevent_notifier); |
792d1932 TT |
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 | } | |
792d1932 | 63 | EXPORT_SYMBOL_GPL(call_netevent_notifiers); |