カーネルが 2.6.16 と 2.6.24, 2.6.25。debian の etch, lenny で試して何となく動いている こちら sch_ingnore を試してみて下さい。etch, lenny 共にカーネルがコンパイルできるパッケージ群と iproute-dev パッケージが必要です。
# 面倒クサがって実質 libnetlink.h 参照しているだけですが....
ingress qdisc のような面構えですが、ただただパケット落とすだけですので qdisc ではありません。カーネルモジュール$ tar xzf mod_ingnore.tgz
$ cd mod_ingnore
$ make
make -C /lib/modules/`uname -r`/source M=`pwd` modules
make[1]: Entering directory `/usr/src/linux'
CC [M] /home/jot/src/mod_ingnore/sch_ingnore.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/jot/src/mod_ingnore/sch_ingnore.mod.o
LD [M] /home/jot/src/mod_ingnore/sch_ingnore.ko
make[1]: Leaving directory `/usr/src/linux'
cc -I./include -shared -fpic -o q_ingnore.so q_ingnore.c
$ ls
Makefile include q_ingnore.so sch_ingnore.mod.c
Module.markers modules.order sch_ingnore.c sch_ingnore.mod.o
Module.symvers q_ingnore.c sch_ingnore.ko sch_ingnore.o
これで eth1 はキャプチャはしますが、その後通常よりちょっとだけ早くパケット落とします。# depmod -a
# tc qdisc add dev eth1 ingnore
# tc qdisc ls dev eth1
qdisc ingnore ffff: parent ffff:fff1
....と書いていて大事なコト忘レタ。#ifdef されている通りカーネルで CONFIG_NET_CLS_ACT が有効になっていないと意味がありません。
0 件のコメント:
コメントを投稿