]>
Commit | Line | Data |
---|---|---|
1fc2f37b | 1 | /* |
2ad0cdc8 | 2 | * Copyright (c) 2008-2012 Red Hat, Inc. |
1fc2f37b CC |
3 | * |
4 | * All rights reserved. | |
5 | * | |
6 | * Author: Christine Caulfield (ccaulfie@redhat.com) | |
7 | * | |
8 | * This software licensed under BSD license, the text of which follows: | |
9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions are met: | |
12 | * | |
13 | * - Redistributions of source code must retain the above copyright notice, | |
14 | * this list of conditions and the following disclaimer. | |
15 | * - Redistributions in binary form must reproduce the above copyright notice, | |
16 | * this list of conditions and the following disclaimer in the documentation | |
17 | * and/or other materials provided with the distribution. | |
18 | * - Neither the name of the MontaVista Software, Inc. nor the names of its | |
19 | * contributors may be used to endorse or promote products derived from this | |
20 | * software without specific prior written permission. | |
21 | * | |
22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
23 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
25 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |
26 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
27 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
28 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
29 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
30 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
31 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF | |
32 | * THE POSSIBILITY OF SUCH DAMAGE. | |
33 | */ | |
031c02f5 FDN |
34 | |
35 | #include <config.h> | |
36 | ||
1fc2f37b CC |
37 | #include <sys/types.h> |
38 | #include <sys/socket.h> | |
39 | #include <sys/un.h> | |
40 | #include <sys/ioctl.h> | |
41 | #include <netinet/in.h> | |
42 | #include <sys/uio.h> | |
43 | #include <unistd.h> | |
44 | #include <fcntl.h> | |
45 | #include <stdlib.h> | |
46 | #include <stdio.h> | |
47 | #include <errno.h> | |
1fc2f37b | 48 | #include <time.h> |
1fc2f37b CC |
49 | #include <arpa/inet.h> |
50 | ||
51 | #include <corosync/corotypes.h> | |
52 | #include <corosync/swab.h> | |
53 | #include <corosync/totem/totempg.h> | |
54 | #include <corosync/totem/totem.h> | |
8ad583a5 | 55 | #include <corosync/logsys.h> |
1fc2f37b CC |
56 | |
57 | #include "quorum.h" | |
58 | #include "main.h" | |
1fc2f37b CC |
59 | #include "vsf.h" |
60 | ||
c3c75acf | 61 | LOGSYS_DECLARE_SUBSYS ("QUORUM"); |
1fc2f37b | 62 | |
1fc2f37b CC |
63 | static struct quorum_callin_functions *corosync_quorum_fns = NULL; |
64 | ||
65 | int corosync_quorum_is_quorate (void) | |
66 | { | |
67 | if (corosync_quorum_fns) { | |
68 | return corosync_quorum_fns->quorate(); | |
69 | } | |
70 | else { | |
71 | return 1; | |
72 | } | |
73 | } | |
74 | ||
75 | int corosync_quorum_register_callback (quorum_callback_fn_t fn, void *context) | |
76 | { | |
77 | if (corosync_quorum_fns) { | |
78 | return corosync_quorum_fns->register_callback(fn, context); | |
79 | } | |
80 | else { | |
81 | return 0; | |
82 | } | |
83 | } | |
84 | ||
85 | int corosync_quorum_unregister_callback (quorum_callback_fn_t fn, void *context) | |
86 | { | |
87 | if (corosync_quorum_fns) { | |
88 | return corosync_quorum_fns->unregister_callback(fn, context); | |
89 | } | |
90 | else { | |
91 | return 0; | |
92 | } | |
93 | } | |
94 | ||
12754324 | 95 | int corosync_quorum_initialize (struct quorum_callin_functions *fns) |
1fc2f37b CC |
96 | { |
97 | if (corosync_quorum_fns) | |
98 | return -1; | |
99 | ||
100 | corosync_quorum_fns = fns; | |
1fc2f37b CC |
101 | return 0; |
102 | } | |
103 | ||
104 | int quorum_none(void) | |
105 | { | |
106 | if (corosync_quorum_fns) | |
107 | return 0; | |
108 | else | |
109 | return 1; | |
110 | } |