[DRBD-cvs] svn commit by phil - r3073 - branches/drbd-8.2/user -
Implemented the handling of options for the proxy.
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Fri Sep 28 10:42:10 CEST 2007
Author: phil
Date: 2007-09-28 10:42:08 +0200 (Fri, 28 Sep 2007)
New Revision: 3073
Modified:
branches/drbd-8.2/user/drbdadm.h
branches/drbd-8.2/user/drbdadm_main.c
branches/drbd-8.2/user/drbdadm_parser.c
branches/drbd-8.2/user/drbdadm_parser.h
branches/drbd-8.2/user/drbdadm_scanner.fl
Log:
Implemented the handling of options for the proxy.
Modified: branches/drbd-8.2/user/drbdadm.h
===================================================================
--- branches/drbd-8.2/user/drbdadm.h 2007-09-26 11:48:13 UTC (rev 3072)
+++ branches/drbd-8.2/user/drbdadm.h 2007-09-28 08:42:08 UTC (rev 3073)
@@ -106,6 +106,7 @@
struct d_option* sync_options;
struct d_option* startup_options;
struct d_option* handlers;
+ struct d_option* proxy_options;
struct d_resource* next;
};
Modified: branches/drbd-8.2/user/drbdadm_main.c
===================================================================
--- branches/drbd-8.2/user/drbdadm_main.c 2007-09-26 11:48:13 UTC (rev 3072)
+++ branches/drbd-8.2/user/drbdadm_main.c 2007-09-28 08:42:08 UTC (rev 3073)
@@ -358,6 +358,7 @@
dump_options("disk",common->disk_options);
dump_options("syncer",common->sync_options);
dump_options("startup",common->startup_options);
+ dump_options("proxy",common->proxy_options);
dump_options("handlers",common->handlers);
--indent; printf("}\n\n");
}
@@ -430,10 +431,19 @@
dump_options_xml("disk",common->disk_options);
dump_options_xml("syncer",common->sync_options);
dump_options_xml("startup",common->startup_options);
+ dump_options_xml("proxy",common->proxy_options);
dump_options_xml("handlers",common->handlers);
--indent; printI("</common>\n");
}
+static void dump_proxy_info_xml(struct d_proxy_info* pi)
+{
+ printI("<proxy hostname=\"%s\">\n",esc_xml(pi->name)); ++indent;
+ printI("<inside port=\"%s\">%s</inside>\n", pi->inside_port, pi->inside_addr);
+ printI("<outside port=\"%s\">%s</outside>\n", pi->outside_port, pi->outside_addr);
+ --indent; printI("</proxy>\n");
+}
+
static void dump_host_info_xml(struct d_host_info* hi)
{
if(!hi) {
@@ -452,6 +462,7 @@
else {
printI("<meta-disk index=\"%s\">%s</meta-disk>\n", hi->meta_index, esc_xml(hi->meta_disk));
}
+ if(hi->proxy) dump_proxy_info_xml(hi->proxy);
--indent; printI("</host>\n");
}
@@ -466,6 +477,7 @@
dump_options("disk",res->disk_options);
dump_options("syncer",res->sync_options);
dump_options("startup",res->startup_options);
+ dump_options("proxy",res->proxy_options);
dump_options("handlers",res->handlers);
--indent; printf("}\n\n");
@@ -484,6 +496,7 @@
dump_options_xml("disk",res->disk_options);
dump_options_xml("syncer",res->sync_options);
dump_options_xml("startup",res->startup_options);
+ dump_options_xml("proxy",res->proxy_options);
dump_options_xml("handlers",res->handlers);
--indent; printI("</resource>\n");
@@ -598,6 +611,7 @@
free_options(f->disk_options);
free_options(f->sync_options);
free_options(f->startup_options);
+ free_options(f->proxy_options);
free_options(f->handlers);
free(f);
}
@@ -606,6 +620,7 @@
free_options(common->disk_options);
free_options(common->sync_options);
free_options(common->startup_options);
+ free_options(common->proxy_options);
free_options(common->handlers);
free(common);
}
@@ -640,6 +655,7 @@
expand_opts(common->disk_options, &res->disk_options);
expand_opts(common->sync_options, &res->sync_options);
expand_opts(common->startup_options, &res->startup_options);
+ expand_opts(common->proxy_options, &res->proxy_options);
expand_opts(common->handlers, &res->handlers);
if(common->protocol && ! res->protocol) {
res->protocol = strdup(common->protocol);
@@ -994,7 +1010,8 @@
static int adm_proxy_up(struct d_resource* res, const char* unused __attribute((unused)))
{
char* argv[MAX_ARGS];
- int argc=0;
+ int argc=0, rv;
+ struct d_option* opt;
argv[NA(argc)]=drbd_proxy_ctl;
argv[NA(argc)]="-c";
@@ -1007,6 +1024,20 @@
res->me->address, res->me->port);
argv[NA(argc)]=0;
+ rv = m_system(argv,SLEEPS_SHORT);
+ if(rv != 0) return rv;
+
+ argc=0;
+ argv[NA(argc)]=drbd_proxy_ctl;
+ opt = res->proxy_options;
+ while(opt) {
+ argv[NA(argc)]="-c";
+ ssprintf(argv[NA(argc)], "set %s %s-%s-%s %s",
+ opt->name, res->me->name, res->name, res->peer->name, opt->value);
+ opt=opt->next;
+ }
+ argv[NA(argc)]=0;
+
return m_system(argv,SLEEPS_SHORT);
}
@@ -1644,6 +1675,13 @@
if ( (opt = find_opt(res->handlers, "outdate-peer")) ) {
if(strstr(opt->value,"drbd-peer-outdater")) sanity_check_perm();
}
+
+ if (( res->me->proxy == NULL ) != (res->peer->proxy == NULL)) {
+ fprintf(stderr,
+ "Incomplete proxy configuration. in resource %s.\n",
+ res->name);
+ config_valid = 0;
+ }
}
static void global_validate(void)
Modified: branches/drbd-8.2/user/drbdadm_parser.c
===================================================================
--- branches/drbd-8.2/user/drbdadm_parser.c 2007-09-26 11:48:13 UTC (rev 3072)
+++ branches/drbd-8.2/user/drbdadm_parser.c 2007-09-28 08:42:08 UTC (rev 3073)
@@ -611,6 +611,11 @@
check_uniq("handlers section", "%s:handlers", res->name);
res->handlers = parse_options(0, TK_HANDLER_OPTION);
break;
+ case TK_PROXY:
+ check_uniq("proxy section", "%s:proxy", res->name);
+ res->proxy_options = parse_options(TK_PROXY_SWITCH,
+ TK_PROXY_OPTION);
+ break;
case '}':
case 0:
goto exit_loop;
Modified: branches/drbd-8.2/user/drbdadm_parser.h
===================================================================
--- branches/drbd-8.2/user/drbdadm_parser.h 2007-09-26 11:48:13 UTC (rev 3072)
+++ branches/drbd-8.2/user/drbdadm_parser.h 2007-09-28 08:42:08 UTC (rev 3073)
@@ -92,6 +92,9 @@
TK_PROXY,
TK_INSIDE,
TK_OUTSIDE,
+ TK_MEMLIMIT,
+ TK_PROXY_OPTION,
+ TK_PROXY_SWITCH,
};
typedef struct YYSTYPE {
Modified: branches/drbd-8.2/user/drbdadm_scanner.fl
===================================================================
--- branches/drbd-8.2/user/drbdadm_scanner.fl 2007-09-26 11:48:13 UTC (rev 3072)
+++ branches/drbd-8.2/user/drbdadm_scanner.fl 2007-09-28 08:42:08 UTC (rev 3073)
@@ -98,6 +98,7 @@
pri-lost { DP; CP; return TK_HANDLER_OPTION; }
outdate-peer { DP; CP; return TK_HANDLER_OPTION; }
local-io-error { DP; CP; return TK_HANDLER_OPTION; }
+memlimit { DP; CP; return TK_PROXY_OPTION; }
{IPV4ADDR} { DP; CP; return TK_IPADDR; }
{NUM} { DP; CP; return TK_INTEGER; }
{DQSTRING} { unescape(); DP; CP; return TK_STRING; }
More information about the drbd-cvs
mailing list