1 /* 2 * Copyright (c) 2009-2011 Red Hat, Inc. 3 * 4 * All rights reserved. 5 * 6 * Author: Steven Dake (sdake@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 */ 34 #ifndef TOTEMIBA_H_DEFINED 35 #define TOTEMIBA_H_DEFINED 36 37 #include <sys/types.h> 38 #include <sys/socket.h> 39 #include <corosync/hdb.h> 40 #include <qb/qbloop.h> 41 42 #include <corosync/totem/totem.h> 43 44 /** 45 * Create an instance 46 */ 47 extern int totemiba_initialize ( 48 qb_loop_t* qb_poll_handle, 49 void **iba_handle, 50 struct totem_config *totem_config, 51 totemsrp_stats_t *stats, 52 int interface_no, 53 void *context, 54 55 void (*deliver_fn) ( 56 void *context, 57 const void *msg, 58 unsigned int msg_len), 59 60 void (*iface_change_fn) ( 61 void *context, 62 const struct totem_ip_address *iface_address), 63 64 void (*target_set_completed) ( 65 void *context)); 66 67 extern void *totemiba_buffer_alloc (void); 68 69 extern void totemiba_buffer_release (void *ptr); 70 71 extern int totemiba_processor_count_set ( 72 void *iba_context, 73 int processor_count); 74 75 extern int totemiba_token_send ( 76 void *iba_context, 77 const void *msg, 78 unsigned int msg_len); 79 80 extern int totemiba_mcast_flush_send ( 81 void *iba_context, 82 const void *msg, 83 unsigned int msg_len); 84 85 extern int totemiba_mcast_noflush_send ( 86 void *iba_context, 87 const void *msg, 88 unsigned int msg_len); 89 90 extern int totemiba_recv_flush (void *iba_context); 91 92 extern int totemiba_send_flush (void *iba_context); 93 94 extern int totemiba_iface_check (void *iba_context); 95 96 extern int totemiba_finalize (void *iba_context); 97 98 extern void totemiba_net_mtu_adjust (void *iba_context, struct totem_config *totem_config); 99 100 extern const char *totemiba_iface_print (void *iba_context); 101 102 extern int totemiba_iface_get ( 103 void *iba_context, 104 struct totem_ip_address *addr); 105 106 extern int totemiba_token_target_set ( 107 void *iba_context, 108 const struct totem_ip_address *token_target); 109 110 extern int totemiba_crypto_set ( 111 void *iba_context, 112 const char *cipher_type, 113 const char *hash_type); 114 115 extern int totemiba_recv_mcast_empty ( 116 void *iba_context); 117 118 #endif /* TOTEMIBA_H_DEFINED */ 119