Send Linux-ha-cvs mailing list submissions to linux-ha-cvs@lists.linux-ha.org
To subscribe or unsubscribe via the World Wide Web, visit http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs or, via email, send a message with subject or body 'help' to [EMAIL PROTECTED] You can reach the person managing the list at [EMAIL PROTECTED] When replying, please edit your Subject line so it is more specific than "Re: Contents of Linux-ha-cvs digest..." Today's Topics: 1. Linux-HA CVS: include by zhenh from (linux-ha-cvs@lists.linux-ha.org) 2. Linux-HA CVS: heartbeat by zhenh from (linux-ha-cvs@lists.linux-ha.org) 3. Linux-HA CVS: heartbeat by zhenh from (linux-ha-cvs@lists.linux-ha.org) ---------------------------------------------------------------------- Message: 1 Date: Sat, 27 May 2006 18:50:46 -0600 (MDT) From: linux-ha-cvs@lists.linux-ha.org Subject: [Linux-ha-cvs] Linux-HA CVS: include by zhenh from To: [EMAIL PROTECTED] Message-ID: <[EMAIL PROTECTED]> linux-ha CVS committal Author : zhenh Host : Project : linux-ha Module : include Dir : linux-ha/include Modified Files: heartbeat.h Log Message: add weight and site fields for node structure =================================================================== RCS file: /home/cvs/linux-ha/linux-ha/include/heartbeat.h,v retrieving revision 1.85 retrieving revision 1.86 diff -u -3 -r1.85 -r1.86 --- heartbeat.h 26 May 2006 02:55:28 -0000 1.85 +++ heartbeat.h 28 May 2006 00:50:45 -0000 1.86 @@ -1,4 +1,4 @@ -/* $Id: heartbeat.h,v 1.85 2006/05/26 02:55:28 zhenh Exp $ */ +/* $Id: heartbeat.h,v 1.86 2006/05/28 00:50:45 zhenh Exp $ */ /* * heartbeat.h: core definitions for the Linux-HA heartbeat program * @@ -261,6 +261,8 @@ int nodetype; char nodename[HOSTLENG]; /* Host name from config file */ cl_uuid_t uuid; + char site[HOSTLENG]; + int weight; char status[STATUSLENG]; /* Status from heartbeat */ gboolean status_suppressed; /* Status reports suppressed for now */ @@ -396,6 +398,8 @@ struct link * lookup_iface(struct node_info * hip, const char *iface); struct link * iface_lookup_node(const char *); int add_node(const char * value, int nodetype); +int set_node_weight(const char * value, int weight); +int set_node_site(const char * value, const char * site); int remove_node(const char * value, int); void SetParameterValue(const char * name, const char * value); ------------------------------ Message: 2 Date: Sat, 27 May 2006 18:52:29 -0600 (MDT) From: linux-ha-cvs@lists.linux-ha.org Subject: [Linux-ha-cvs] Linux-HA CVS: heartbeat by zhenh from To: [EMAIL PROTECTED] Message-ID: <[EMAIL PROTECTED]> linux-ha CVS committal Author : zhenh Host : Project : linux-ha Module : heartbeat Dir : linux-ha/heartbeat Modified Files: hb_uuid.c Log Message: add weight and site to hostcache =================================================================== RCS file: /home/cvs/linux-ha/linux-ha/heartbeat/hb_uuid.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- hb_uuid.c 26 Apr 2006 03:42:07 -0000 1.24 +++ hb_uuid.c 28 May 2006 00:52:29 -0000 1.25 @@ -463,24 +463,28 @@ */ static int -node_uuid_file_out(FILE *f, const char * nodename, const cl_uuid_t * uu) +node_uuid_file_out(FILE *f, const char * nodename, const cl_uuid_t * uu +, int weight, const char* site) { char uuid_str[UU_UNPARSE_SIZEOF]; cl_uuid_unparse(uu, uuid_str); - if (fprintf(f, "%s\t%s\n", nodename, uuid_str) > sizeof(uuid_str)) { + if (fprintf(f, "%s\t%s\t%d\t%s\n", nodename, uuid_str, weight, site?site:"") + > sizeof(uuid_str)) { return HA_OK; } return HA_FAIL; } static int /* Returns -, 0 + *; 0 = EOF, + = OK, - = ERROR */ -node_uuid_file_in(FILE *f, char* nodename, cl_uuid_t * uu) +node_uuid_file_in(FILE *f, char* nodename, cl_uuid_t * uu, int* weight, char* site) { char linebuf[MAXLINE]; - char * tab; + char * name_end; + char * uuid_end; + char * weight_end; int len; int hlen; - + if (fgets(linebuf, MAXLINE, f) == NULL) { if (feof(f)) { return 0; @@ -501,21 +505,38 @@ return -1; } linebuf[len] = EOS; - tab = strchr(linebuf, '\t'); - if (tab == NULL || (hlen=(tab - linebuf)) > (HOSTLENG-1) || hlen < 1){ + name_end = strchr(linebuf, '\t'); + if (name_end == NULL || (hlen=(name_end - linebuf)) > (HOSTLENG-1) || hlen < 1){ cl_log(LOG_ERR, "Malformed node/uuid line [%s] (3)", linebuf); return -1; } - if ((len - hlen) != UU_UNPARSE_SIZEOF) { - cl_log(LOG_ERR, "Malformed node/uuid line [%s] (4)", linebuf); - return -1; + *name_end = EOS; + strncpy(nodename, linebuf, HOSTLENG); + uuid_end = strchr(name_end+1, '\t'); + if (uuid_end != NULL) { + *uuid_end = EOS; } - if (cl_uuid_parse(tab+1, uu) < 0) { + if (cl_uuid_parse(name_end+1, uu) < 0) { cl_log(LOG_ERR, "Malformed uuid in line [%s] (5)", linebuf); return -1; } - *tab = EOS; - strncpy(nodename, linebuf, HOSTLENG); + if (uuid_end == NULL) { + /* old format, no weight and site columns */ + *weight = 100; + *site = 0; + return 1; + } + weight_end = strchr(uuid_end+1, '\t'); + if (weight_end != NULL) { + *weight_end = EOS; + } + *weight = atoi(uuid_end+1); + if (weight_end == NULL) { + /* no site columns */ + *site = 0; + return 1; + } + strncpy(site, weight_end+1, HOSTLENG); return 1; } @@ -541,7 +562,8 @@ continue; } if (node_uuid_file_out(f, cfg->nodes[j].nodename - , &cfg->nodes[j].uuid) != HA_OK) { + , &cfg->nodes[j].uuid, cfg->nodes[j].weight + , cfg->nodes[j].site) != HA_OK) { fclose(f); unlink(tmpname); return HA_FAIL; @@ -579,6 +601,8 @@ FILE * f; char host[HOSTLENG]; cl_uuid_t uu; + int weight; + char site[HOSTLENG]; int rc; const char * uuidcachename = HOSTUUIDCACHEFILE; gboolean outofsync = FALSE; @@ -593,12 +617,14 @@ return HA_FAIL; } - while ((rc=node_uuid_file_in(f, host, &uu)) > 0) { + while ((rc=node_uuid_file_in(f, host, &uu, &weight, site)) > 0) { struct node_info * thisnode = lookup_tables(host, &uu); cl_uuid_t curuuid; if (thisnode == NULL) { /* auto-added node */ add_node(host, NORMALNODE_I); + set_node_weight(host, weight); + set_node_site(host, site); update_tables(host, &uu); continue; } @@ -610,6 +636,8 @@ outofsync=TRUE; } } + thisnode->weight = weight; + strncpy(thisnode->site, site, sizeof(thisnode->site)); } fclose(f); /* @@ -653,7 +681,7 @@ } if (node_uuid_file_out(f, hip->nodename, - &hip->uuid) != HA_OK) { + &hip->uuid, hip->weight, hip->site) != HA_OK) { fclose(f); unlink(tmpname); return HA_FAIL; @@ -694,6 +722,8 @@ FILE * f; char host[HOSTLENG]; cl_uuid_t uu; + int weight; + char site[HOSTLENG]; int rc; const char * filename = DELHOSTCACHEFILE; struct node_info thisnode; @@ -708,11 +738,12 @@ , __FUNCTION__, filename); return HA_FAIL; } - - while ((rc=node_uuid_file_in(f, host, &uu)) > 0) { + memset(site, 0, sizeof(site)); + while ((rc=node_uuid_file_in(f, host, &uu, &weight, site)) > 0) { strncpy(thisnode.nodename, host, HOSTLENG); cl_uuid_copy(&thisnode.uuid, &uu); - + thisnode.weight = weight; + strncpy(thisnode.site, site, HOSTLENG); remove_node(thisnode.nodename, TRUE); } ------------------------------ Message: 3 Date: Sat, 27 May 2006 18:53:20 -0600 (MDT) From: linux-ha-cvs@lists.linux-ha.org Subject: [Linux-ha-cvs] Linux-HA CVS: heartbeat by zhenh from To: [EMAIL PROTECTED] Message-ID: <[EMAIL PROTECTED]> linux-ha CVS committal Author : zhenh Host : Project : linux-ha Module : heartbeat Dir : linux-ha/heartbeat Modified Files: config.c Log Message: add functions for setting the weight and site of node =================================================================== RCS file: /home/cvs/linux-ha/linux-ha/heartbeat/config.c,v retrieving revision 1.201 retrieving revision 1.202 diff -u -3 -r1.201 -r1.202 --- config.c 26 May 2006 02:55:28 -0000 1.201 +++ config.c 28 May 2006 00:53:19 -0000 1.202 @@ -1,4 +1,4 @@ -/* $Id: config.c,v 1.201 2006/05/26 02:55:28 zhenh Exp $ */ +/* $Id: config.c,v 1.202 2006/05/28 00:53:19 zhenh Exp $ */ /* * Parse various heartbeat configuration files... * @@ -1265,6 +1265,7 @@ hip->track.nmissing = 0; hip->track.last_seq = NOSEQUENCE; hip->track.ackseq = 0; + hip->weight = 100; srand(time(NULL)); hip->track.ack_trigger = rand()%ACK_MSG_DIV; hip->nodetype = nodetype; @@ -1280,8 +1281,60 @@ return(HA_OK); } +int +set_node_weight(const char* value, int weight) +{ + int i; + struct node_info * hip = NULL; + if (value == NULL){ + cl_log(LOG_ERR, "%s: invalid nodename", + __FUNCTION__); + return HA_FAIL; + } + + for (i = 0; i < config->nodecount; i++){ + hip = &config->nodes[i]; + if (strncasecmp(hip->nodename, value, sizeof(hip->nodename)) ==0){ + break; + } + } + if (i == config->nodecount){ + cl_log(LOG_DEBUG,"set weight to non-existing node %s", value); + return HA_FAIL; + } + + hip->weight = weight; + return HA_OK; +} + +int +set_node_site(const char* value, const char* site) +{ + int i; + struct node_info * hip = NULL; + + if (value == NULL){ + cl_log(LOG_ERR, "%s: invalid nodename", + __FUNCTION__); + return HA_FAIL; + } + + for (i = 0; i < config->nodecount; i++){ + hip = &config->nodes[i]; + if (strncasecmp(hip->nodename, value, sizeof(hip->nodename)) ==0){ + break; + } + } + + if (i == config->nodecount){ + cl_log(LOG_DEBUG,"set site to non-existing node %s", value); + return HA_FAIL; + } + strncpy(hip->site, site, sizeof(hip->site)); + return HA_OK; +} int remove_node(const char* value, int deletion) @@ -2585,6 +2638,9 @@ /* * $Log: config.c,v $ + * Revision 1.202 2006/05/28 00:53:19 zhenh + * add functions for setting the weight and site of node + * * Revision 1.201 2006/05/26 02:55:28 zhenh * add "cluster" directive as the name of cluster to ha.cf and parameter of cluster * ------------------------------ _______________________________________________ Linux-ha-cvs mailing list Linux-ha-cvs@lists.linux-ha.org http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs End of Linux-ha-cvs Digest, Vol 30, Issue 88 ********************************************