« Plagger::Plugin::Aggregator::Async | メイン | 高速Webサーバ Nginxの組み込みPerlを使ってみる »

keepalived-1.1.13がkernel 2.6.20でコンパイルできない

すでにupdateでkernel 2.6.20になるfc6でkeepalivedのmakeが通らない。

/usr/include/stdint.h:56: error: conflicting types for ‘uint64_t’
/lib/modules/2.6.20-1.2944.fc6/build/include/linux/types.h:124: error: previous declaration of ‘uint64_t’ was here
                                                                                                                 vrrp_arp.c: In function ‘send_gratuitous_arp’:
vrrp_arp.c:84: warning: pointer targets in initialization differ in signedness
make[2]: *** [vrrp_arp.o] Error 1

こんな感じのエラーで止まる。

同じことを悩んでいる方もいました。
keepalived-1.1.13カーネル2.6.20以降でコンパイル通らず

次のバージョンで直る予定らしいですがorz
それまで待てないので、keepalivedのrpmではどうやっているのか、調べたところ、
http://ftp.iij.ad.jp/pub/linux/fedora/extras/6/SRPMS/keepalived-1.1.13-6.fc6.src.rpm
の中で、以下なpatchがあたってました

diff -Naupr keepalived-1.1.13.orig/keepalived/vrrp/vrrp_arp.c keepalived-1.1.13/keepalived/vrrp/vrrp_arp.c
--- keepalived-1.1.13.orig/keepalived/vrrp/vrrp_arp.c   2006-10-11 11:44:59.000000000 +0200
+++ keepalived-1.1.13/keepalived/vrrp/vrrp_arp.c        2007-03-22 16:22:29.000000000 +0100
@@ -22,14 +22,14 @@
  * Copyright (C) 2001-2006 Alexandre Cassen, <acassen@linux-vs.org>
  */
 
-/* system includes */
-#include <linux/if_packet.h>
-
 /* local includes */
 #include "vrrp_arp.h"
 #include "memory.h"
 #include "utils.h"
 
+/* system includes */
+#include <linux/if_packet.h>
+
 /* global vars */
 char *garp_buffer;
 int garp_fd;


includeの順番が変わっただけっぽいですが、これでmake通るようになりました。