It seems that heartbeat/hb_api_core.h and heartebat/hb_api.h
are out of date copies of files in include/. I'm not sure
why this hasn't happened before, but today they are causing
my build to fail.

Removing heartbeat/hb_api_core.h resolves the following warnings and errors:

#make
[snip]
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../include -I../include -I../include 
-I../linux-ha -I../linux-ha -I../libltdl -I../libltdl  -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include   -I/usr/include/libxml2 -g -O2  -Wall 
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes 
-Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual 
-Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 
-Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing   
-ggdb3 -funsigned-char -g -O2  -Wall -Wmissing-prototypes 
-Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement 
-Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast 
-Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing   -ggdb3 
-funsigned-char -MT heartbeat-heartbeat.o -MD -MP -MF 
.deps/heartbeat-heartbeat.Tpo -c -o heartbeat-heartbeat.o `test -f 
'heartbeat.c' || 
 echo './'`heartbeat.c
heartbeat.c: In function 'SetupFifoChild':
heartbeat.c:703: error: 'PRI_FIFOMSG' undeclared (first use in this function)
heartbeat.c:703: error: (Each undeclared identifier is reported only once
heartbeat.c:703: error: for each function it appears in.)
heartbeat.c: In function 'make_io_childpair':
heartbeat.c:874: error: 'PRI_SENDPKT' undeclared (first use in this function)
heartbeat.c:889: error: 'PRI_READPKT' undeclared (first use in this function)
heartbeat.c: In function 'master_control_process':
heartbeat.c:1515: error: 'PRI_WRITECACHE' undeclared (first use in this 
function)
heartbeat.c:1606: error: 'PRI_SENDSTATUS' undeclared (first use in this 
function)
heartbeat.c:1610: error: 'PRI_AUDITCLIENT' undeclared (first use in this 
function)
heartbeat.c:1619: warning: passing argument 3 of 'Gmain_timeout_add_full' from 
incompatible pointer type
heartbeat.c:1630: error: 'PRI_CHECKSIGS' undeclared (first use in this function)
heartbeat.c:1634: error: 'PRI_FREEMSG' undeclared (first use in this function)
heartbeat.c:1639: error: 'PRI_DUMPSTATS' undeclared (first use in this function)
heartbeat.c: In function 'comm_now_up':
heartbeat.c:1919: error: 'API_REGSOCK' undeclared (first use in this function)
heartbeat.c:1955: error: 'PRI_APIREGISTER' undeclared (first use in this 
function)
heartbeat.c:1956: warning: passing argument 1 of 
'G_main_add_IPC_WaitConnection' makes integer from pointer without a cast
heartbeat.c: In function 'update_ackseq':
heartbeat.c:2432: warning: implicit declaration of function 'all_clients_resume'
heartbeat.c: In function 'HBDoMsg_T_QCSTATUS':
heartbeat.c:3264: warning: implicit declaration of function 'find_client'
heartbeat.c:3264: warning: comparison between pointer and integer
heartbeat.c: In function 'add2_xmit_hist':
heartbeat.c:6247: warning: implicit declaration of function 'all_clients_pause'
make[1]: *** [heartbeat-heartbeat.o] Error 1
make[1]: Leaving directory 
`/home/horms/projects/linux-ha/hg/horms/lha-dev/heartbeat'
make: *** [all-recursive] Error 1

Removing heartbeat/hb_api.h resolves the following error:

#make
[snip]
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../include -I../include -I../include 
-I../linux-ha -I../linux-ha -I../libltdl -I../libltdl  -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include   -I/usr/include/libxml2 -g -O2  -Wall 
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes 
-Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual 
-Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 
-Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing   
-ggdb3 -funsigned-char -g -O2  -Wall -Wmissing-prototypes 
-Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement 
-Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast 
-Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing   -ggdb3 
-funsigned-char -MT heartbeat-heartbeat.o -MD -MP -MF 
.deps/heartbeat-heartbeat.Tpo -c -o heartbeat-heartbeat.o `test -f 
'heartbeat.c' || 
 echo './'`heartbeat.c
heartbeat.c: In function 'main':
heartbeat.c:4887: error: 'KEY_HBVERSION' undeclared (first use in this function)
heartbeat.c:4887: error: (Each undeclared identifier is reported only once
heartbeat.c:4887: error: for each function it appears in.)
make[1]: *** [heartbeat-heartbeat.o] Error 1
make[1]: Leaving directory 
`/home/horms/projects/linux-ha/hg/horms/lha-dev/heartbeat'
make: *** [all-recursive] Error 1

Signed-off-by: Simon Horman <[EMAIL PROTECTED]>

Index: lha-dev/heartbeat/hb_api.h
===================================================================
--- lha-dev.orig/heartbeat/hb_api.h     2008-10-15 16:24:37.000000000 +1100
+++ /dev/null   1970-01-01 00:00:00.000000000 +0000
@@ -1,232 +0,0 @@
-/*
- * Client-side Low-level clustering API for heartbeat.
- *
- * Copyright (C) 2000 Alan Robertson <[EMAIL PROTECTED]>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- * Currently the client-side heartbeat API needs to write in the /var/lock
- * directory for non-casual (named) clients.  This has implications for the
- * euid, egid that we run as.
- *
- * Expect to set make your binaries setgid to uucp, or allow the uid
- * they run as to join the group uucp (or whatever your local system
- * has it set up as).
- *
- * Additionally, you must belong to the group hbapi.  Fortunately, UNIX
- * group permissions are quite flexible, and you can do both.
- */
-
-/*
- * Known deficiencies of this API:
- *
- * Each of the various set..callback functions should probably return
- * the current callback and private data parameter, so the caller can
- * restore them later.
- *
- */
-
-#ifndef __HB_API_H
-#      define __HB_API_H 1
-#include <ha_msg.h>
-
-#define        LLC_PROTOCOL_VERSION    1
-
-typedef void (*llc_msg_callback_t) (const struct ha_msg* msg
-,      void* private_data);
-
-typedef void (*llc_nstatus_callback_t) (const char *node, const char * status
-,      void* private_data);
-
-typedef void (*llc_ifstatus_callback_t) (const char *node
-,      const char * interface, const char * status
-,      void* private_data);
-
-typedef struct ll_cluster {
-       void *          ll_cluster_private;
-       struct llc_ops* llc_ops;
-}ll_cluster_t;
-
-struct llc_ops {
-       int             (*signon) (ll_cluster_t*, const char * service);
-       int             (*signoff) (ll_cluster_t*);
-       int             (*delete) (ll_cluster_t*);
-       
-/*
- *************************************************************************
- * Status Update Callbacks
- *************************************************************************
- */
-
-/*
- *     set_msg_callback:       Define callback for the given message type 
- *
- *     msgtype:        Type of message being handled. 
- *                     Messages intercepted by nstatus_callback or
- *                     ifstatus_callback functions won't be handled here.
- *
- *     callback:       callback function.
- *
- *     p:              private data - later passed to callback.
- */
-       int             (*set_msg_callback) (ll_cluster_t*, const char * msgtype
-       ,                       llc_msg_callback_t callback, void * p);
-
-/*
- *     set_nstatus_callback:   Define callback for node status messages
- *                             This is a message of type "status"
- *
- *     cbf:            callback function.
- *
- *     p:              private data - later passed to callback.
- */
-
-       int             (*set_nstatus_callback) (ll_cluster_t*
-       ,               llc_nstatus_callback_t cbf,     void * p);
-/*
- *     set_ifstatus_callback:  Define callback for interface status messages
- *                             This is a message of type "ifstat"
- *                     These messages are received whenever an interface goes
- *                     dead or becomes active again.
- *
- *     cbf:            callback function.
- *
- *     p:              private data - later passed to callback.
- */
-       int             (*set_ifstatus_callback) (ll_cluster_t*
-,                      llc_ifstatus_callback_t cbf, void * p);
- 
-
-/*************************************************************************
- * Getting Current Information
- *************************************************************************/
-
-/*
- *     init_nodewalk:  Initialize walk through list of list of known nodes
- */
-       int             (*init_nodewalk)(ll_cluster_t*);
-/*
- *     nextnode:       Return next node in the list of known nodes
- */
-       const char *    (*nextnode)(ll_cluster_t*);
-/*
- *     end_nodewalk:   End walk through the list of known nodes
- */
-       int             (*end_nodewalk)(ll_cluster_t*);
-/*
- *     node_status:    Return most recent heartbeat status of the given node
- */
-       const char *    (*node_status)(ll_cluster_t*, const char * nodename);
-/*
- *     init_ifwalk:    Initialize walk through list of list of known interfaces
- */
-       int             (*init_ifwalk)(ll_cluster_t*, const char * node);
-/*
- *     nextif: Return next node in the list of known interfaces on node
- */
-       const char *    (*nextif)(ll_cluster_t*);
-/*
- *     end_ifwalk:     End walk through the list of known interfaces
- */
-       int             (*end_ifwalk)(ll_cluster_t*);
-/*
- *     if_status:      Return current status of the given interface
- */
-       const char*     (*if_status)(ll_cluster_t*, const char * nodename
-,                      const char *iface);
-
-/*************************************************************************
- * Intracluster messaging
- *************************************************************************/
-
-/*
- *     sendclustermsg: Send the given message to all cluster members
- */
-       int             (*sendclustermsg)(ll_cluster_t*
-,                      struct ha_msg* msg);
-/*
- *     sendnodemsg:    Send the given message to the given node in cluster.
- */
-       int             (*sendnodemsg)(ll_cluster_t*
-,                      struct ha_msg* msg
-,                      const char * nodename);
-
-/*
- *     inputfd:        Return fd which can be given to select(2) or poll(2)
- *                     for determining when messages are ready to be read.
- *                     Only to be used in select() or poll(), please...
- */
-       int             (*inputfd)(ll_cluster_t*);
-/*
- *     msgready:       Returns TRUE (1) when a message is ready to be read.
- */
-       int             (*msgready)(ll_cluster_t*);
-/*
- *     setmsgsignal:   Associates the given signal with the "message waiting"
- *                     condition.
- */
-       int             (*setmsgsignal)(ll_cluster_t*, int signo);
-/*
- *     rcvmsg: Cause the next message to be read - activating callbacks for
- *             processing the message.  If no callback processes the message
- *             it will be ignored.  The message is automatically disposed of.
- *             It returns 1 if a message was received.
- */
-       int             (*rcvmsg)(ll_cluster_t*, int blocking);
-
-/*
- *     Return next message not intercepted by a callback.
- *     NOTE: you must dispose of this message by calling ha_msg_del().
- */
-       struct ha_msg* (*readmsg)(ll_cluster_t*, int blocking);
-
-/*
- *************************************************************************
- * Debugging
- *************************************************************************
- *
- *     setfmode: Set filter mode.  Analagous to promiscous mode in TCP.
- *             Gotta be root to turn on debugging!
- *
- *     LLC_FILTER_DEFAULT (default)
- *             In this mode, all messages destined for this pid
- *             are received, along with all that don't go to specific pids.
- *
- *     LLC_FILTER_PMODE See all messages, but filter heart beats
- *
- *                             that don't tell us anything new.
- *     LLC_FILTER_ALLHB See all heartbeats, including those that
- *                              don't change status.
- *     LLC_FILTER_RAW  See all packets, from all interfaces, even
- *                     dups.  Pkts with auth errors are still ignored.
- *
- *     Set filter mode.  Analagous to promiscous mode in TCP.
- *
- */
-#      define  LLC_FILTER_DEFAULT      0
-#      define  LLC_FILTER_PMODE        1
-#      define  LLC_FILTER_ALLHB        2
-#      define  LLC_FILTER_RAW          3
-
-       int (*setfmode)(ll_cluster_t*, int mode);
-
-       const char * (*errmsg)(ll_cluster_t*);
-};
-
-ll_cluster_t*  ll_cluster_new(const char * llctype);
-#endif /* __HB_API_H */
Index: lha-dev/heartbeat/hb_api_core.h
===================================================================
--- lha-dev.orig/heartbeat/hb_api_core.h        2008-10-15 16:19:37.000000000 
+1100
+++ /dev/null   1970-01-01 00:00:00.000000000 +0000
@@ -1,161 +0,0 @@
-/*
- * hb_api_core_h: Internal definitions and functions for the heartbeat API
- *
- * Copyright (C) 2000 Alan Robertson <[EMAIL PROTECTED]>
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#ifndef _HB_API_CORE_H
-#      define _HB_API_CORE_H 1
-#include <sys/types.h>
-#include <clplumbing/longclock.h>
-#include <ha_msg.h>
-
-/*
- *   Per-client API data structure.
- */
-
-typedef struct client_process {
-       char    client_id[32];  /* Client identification */
-       pid_t   pid;            /* PID of client process */
-       uid_t   uid;            /* UID of client  process */
-       int     iscasual;       /* 1 if this is a "casual" client */
-       int             beingremoved;   /* 1 if client is being removed */
-       FILE*           input_fifo;     /* Input FIFO file pointer */
-       GList*          msgQ;           /* Queue of msgs for client */
-       int             msgcount;       /* length of client message queue */
-       int      signal;                /* What signal to indicate new msgs */
-       int       desired_types;        /* A bit mask of desired message types*/
-       struct client_process*  next;
-       GPollFD         gpfd;           /* Glib main Poll file descriptor */
-       guint           g_source_id;    /* return from g_source_add */
-       guint           g_app_hb_id;    /* Application heartbeat timer id */
-       longclock_t     next_app_hb;    /* Next application heartbeat time */
-       longclock_t     app_hb_ticks;   /* ticks between app heartbeats */
-}client_proc_t;
-
-/*
- * Types of messages. 
- * DROPIT and/or DUPLICATE are only used when a debugging callback
- * is registered.
- */ 
-
-
-/*
- *     This next set of defines is for the types of packets that come through
- *     heartbeat.
- *
- *     Any given packet behaves like an enumeration (should only have one bit
- *     on), but the options from client software treat them more like a set
- *     (bit field), with more than one at a time being on.  Normally the
- *     client only requests KEEPIT packets, but for debugging may want to
- *     ask to see the others too.
- */
-#define        KEEPIT          0x01    /* A set of bits */
-#define        NOCHANGE        0x02
-#define        DROPIT          0x04
-#define DUPLICATE      0x08
-#define APICALL                0x10
-#define PROTOCOL       0x20
-#define        DEBUGTREATMENTS (DROPIT|DUPLICATE|APICALL|NOCHANGE|PROTOCOL)
-#define        ALLTREATMENTS   (DEBUGTREATMENTS|KEEPIT)
-#define        DEFAULTREATMENT (KEEPIT)
-
-#define        API_SIGNON              "signon"
-#define        API_SIGNOFF             "signoff"
-#define        API_SETFILTER           "setfilter"
-#      define  F_FILTERMASK    "fmask"
-#define        API_SETSIGNAL           "setsignal"
-#      define  F_SIGNAL        "signal"
-#define        API_NODELIST            "nodelist"
-#      define  F_NODENAME      "node"
-#define        API_NODELIST_END        "nodelist-end"
-#define        API_NODESTATUS          "nodestatus"
-
-#define        API_IFLIST              "iflist"
-#      define  F_IFNAME        "ifname"
-#define        API_IFLIST_END          "iflist-end"
-#define        API_IFSTATUS            "ifstatus"
-
-
-#define        API_OK                  "OK"
-#define        API_FAILURE             "fail"
-#define        API_BADREQ              "badreq"
-#define        API_MORE                "ok/more"
-
-#define        API_FIFO_DIR    VAR_LIB_D "/api"
-#define        API_FIFO_LEN    (sizeof(API_FIFO_DIR)+32)
-
-#define        NAMEDCLIENTDIR  API_FIFO_DIR
-#define        CASUALCLIENTDIR VAR_LIB_D "/casual"
-
-#define        REQ_SUFFIX      ".req"
-#define        RSP_SUFFIX      ".rsp"
-
-#ifndef API_REGFIFO
-#      define  API_REGFIFO     VAR_LIB_D "/register"
-#endif
-
-void api_heartbeat_monitor(struct ha_msg *msg, int msgtype, const char *iface);
-void api_process_registration(struct ha_msg *msg);
-void process_api_msgs(fd_set* inputs, fd_set* exceptions);
-int  compute_msp_fdset(fd_set* set, int fd1, int fd2);
-void api_audit_clients(void);
-
-/* Return code for API query handlers */
-
-#define I_API_RET      0 /* acknowledge client of successful API query */
-#define I_API_IGN      1 /* do nothing */
-#define I_API_BADREQ   2 /* send error msg to client with "failreason" as 
error reason */
-
-/* Handler of API query */
-typedef int (*api_query_handler_t) (const struct ha_msg* msg
-                       , struct ha_msg *resp, client_proc_t* client
-                       , const char **failreason);
-
-struct api_query_handler {
-               const char *queryname;
-               api_query_handler_t handler;
-};
-
-/* Definitions of API query handlers */
-
-int api_signoff (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char **failreason);
-
-int api_setfilter (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char **failreason);
-
-int api_setsignal (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char** failreason);
-
-int api_nodelist (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char** failreason);
-
-int api_nodestatus (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char** failreason);
-
-int api_ifstatus (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char** failreason);
-
-int api_iflist (const struct ha_msg* msg, struct ha_msg* resp
-,      client_proc_t* client, const char** failreason);
-
-void ProcessAnAPIRequest(client_proc_t* client);
-
-#endif /* _HB_API_CORE_H */

-- 

-- 
Simon Horman
  VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
  H: www.vergenet.net/~horms/             W: www.valinux.co.jp/en

_______________________________________________________
Linux-HA-Dev: [email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Reply via email to