カーネルモジュールことはじめ #5

ip_vs_test 用の Kconfig と Makefile のパッチです。これで make menuconfig から test scheduling (IP_VS_TEST) を選択できるようになるはずです。

あ、あと、#3のip_vs_test.c は net/ipv4/ipvs/ に置いて下さい。これで、現在稼働中のカーネルのソースであれば make modules_install するだけで ipvsadm -A -t IP:PORT -s test とかできるようになるんじゃないかな。keepalived.conf にも lb_algo test って書いて動いてくれるはずです。とはいえ、まだ何もしてくれませんが(^^;;

# 昨日のコードに足りない部分があったので追記しました、ごめんなさい。

diff -uN linux-2.6.20.3/net/ipv4/ipvs/Kconfig linux-2.6.20.3.new/net/ipv4/ipvs/Kconfig
--- linux-2.6.20.3/net/ipv4/ipvs/Kconfig  2007-03-14 03:27:08.000000000 +0900
+++ linux-2.6.20.3.new/net/ipv4/ipvs/Kconfig  2007-04-09 14:39:57.000000000 +0900
@@ -224,6 +224,12 @@
    If you want to compile it in kernel, say Y. To compile it as a
    module, choose M here. If unsure, say N.

+config IP_VS_TEST
+ tristate "test scheduling"
+ depends on IP_VS
+ ---help---
+   TEST
+
 comment 'IPVS application helper'
  depends on IP_VS

diff -uN linux-2.6.20.3/net/ipv4/ipvs/Makefile linux-2.6.20.3.new/net/ipv4/ipvs/Makefile
--- linux-2.6.20.3/net/ipv4/ipvs/Makefile 2007-03-14 03:27:08.000000000 +0900
+++ linux-2.6.20.3.new/net/ipv4/ipvs/Makefile 2007-04-09 14:29:05.000000000 +0900
@@ -29,6 +29,7 @@
 obj-$(CONFIG_IP_VS_SH) += ip_vs_sh.o
 obj-$(CONFIG_IP_VS_SED) += ip_vs_sed.o
 obj-$(CONFIG_IP_VS_NQ) += ip_vs_nq.o
+obj-$(CONFIG_IP_VS_TEST) += ip_vs_test.o

 # IPVS application helpers
 obj-$(CONFIG_IP_VS_FTP) += ip_vs_ftp.o

実行結果

# make modules
# make modules_install
# ipvsadm -A -t 10.10.0.1:80 -s test
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.0.1:80 test
# lsmod
Module                  Size  Used by
ip_vs_test              3456  1
ip_vs                  97984  5 ip_vs_test