Branch data Line data Source code
1 : : /*
2 : : * Copyright (c) 2015 Red Hat, Inc.
3 : : *
4 : : * Licensed under the Apache License, Version 2.0 (the "License");
5 : : * you may not use this file except in compliance with the License.
6 : : * You may obtain a copy of the License at:
7 : : *
8 : : * http://www.apache.org/licenses/LICENSE-2.0
9 : : *
10 : : * Unless required by applicable law or agreed to in writing, software
11 : : * distributed under the License is distributed on an "AS IS" BASIS,
12 : : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 : : * See the License for the specific language governing permissions and
14 : : * limitations under the License.
15 : : */
16 : :
17 : : #include <config.h>
18 : : #include "if-notifier.h"
19 : : #include "rtnetlink.h"
20 : : #include "util.h"
21 : :
22 : : struct if_notifier {
23 : : struct nln_notifier *notifier;
24 : : if_notify_func *cb;
25 : : void *aux;
26 : : };
27 : :
28 : : static void
29 : 2211 : if_notifier_cb(const struct rtnetlink_change *change OVS_UNUSED, void *aux)
30 : : {
31 : : struct if_notifier *notifier;
32 : 2211 : notifier = aux;
33 : 2211 : notifier->cb(notifier->aux);
34 : 2211 : }
35 : :
36 : : struct if_notifier *
37 : 617 : if_notifier_create(if_notify_func *cb, void *aux)
38 : : {
39 : : struct if_notifier *notifier;
40 : 617 : notifier = xmalloc(sizeof *notifier);
41 : 617 : notifier->cb = cb;
42 : 617 : notifier->aux = aux;
43 : 617 : notifier->notifier = rtnetlink_notifier_create(if_notifier_cb, notifier);
44 : 617 : return notifier;
45 : : }
46 : :
47 : : void
48 : 617 : if_notifier_destroy(struct if_notifier *notifier)
49 : : {
50 [ + - ]: 617 : if (notifier) {
51 : 617 : rtnetlink_notifier_destroy(notifier->notifier);
52 : 617 : free(notifier);
53 : : }
54 : 617 : }
55 : :
56 : : void
57 : 105174 : if_notifier_run(void)
58 : : {
59 : 105174 : rtnetlink_run();
60 : 105174 : }
61 : :
62 : : void
63 : 105174 : if_notifier_wait(void)
64 : : {
65 : 105174 : rtnetlink_wait();
66 : 105174 : }
|