読者です 読者をやめる 読者になる 読者になる

keepalived include対応パッチが本家にマージされました

以前、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);
 }