以前、keepalivedのinclude対応パッチを本家MLに投げたのですが、今日リリースされたv1.1.14に取り込まれていました。
* keepalived-1.1.14 released.
* Shinji Tanaka,extended parsing
framework to support "include" directives.
...
やはり、自分のパッチが認められて、取り込まれるのは、うれしいものですね。v1.1.14では、他にも、「error logging while parsing configuration file.」とか「vrrp_script logging.」とかが含まれていて、なかなか有用なアップデートとなっています。
ただ、include対応パッチには、実はバグが残っていたりするので(手元では解決済み)、パッチを投げてみました。他にも取り込み漏れのパッチがあったようなので、早い段階で1.1.15が出るかもしれません。
diff -ru keepalived-1.1.14/lib/parser.c keepalived-1.1.14.include/lib/parser.c --- keepalived-1.1.14/lib/parser.c 2007-09-14 00:14:16.000000000 +0900 +++ keepalived-1.1.14.include/lib/parser.c 2007-09-14 07:42:01.000000000 +0900 @@ -33,6 +33,7 @@ /* global vars */ vector keywords; +vector current_keywords; FILE *current_stream; char *current_conf_file; int reload = 0; @@ -213,7 +214,7 @@ char *confpath = strdup(globbuf.gl_pathv[i]); dirname(confpath); chdir(confpath); - process_stream(keywords); + process_stream(current_keywords); fclose(stream); chdir(prev_path); @@ -388,6 +389,8 @@ char *str; char *buf; vector strvec; + vector prev_keywords = current_keywords; + current_keywords = keywords_vec; buf = zalloc(MAXBUF); while (read_line(buf, MAXBUF)) { @@ -423,6 +426,7 @@ free_strvec(strvec); } + current_keywords = prev_keywords; free(buf); return; } @@ -442,6 +446,7 @@ #endif /* Stream handling */ + current_keywords = keywords; read_conf_file((conf_file) ? conf_file : CONF); free_keywords(keywords); }