2011-12-27 17 views
0

MIPSベースのプラットフォームでiptables-1.4.3.2がLinux-2.6.35.9で動作しようとしています。発行されたコマンドは、入力/出力エラーとiptablesで入出力エラーが発生する

iptables -t mangle -A POSTROUTING -p udp -j <TC name> --map tos 

iptablesの終了(同じコマンドは、Linux-2.6.28.8に取り組んでいた)です。そして、私たちのターゲット上の同じのためにstraceを行なったし、以下のような問題を見て:上記のコードはlibiptc.cである

socket(PF_INET, SOCK_RAW, IPPROTO_RAW) = 3 
getsockopt(3, SOL_IP, 0x40 /* IP_??? */, "mangle\0\0\0\0\0\34\200F\0\0\200\1\340 \244\200\1\340\244\200\7W\224\200\7W\f\0"..., [84]) = 0 
getsockopt(3, SOL_IP, 0x41 /* IP_??? */, "mangle\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., [976]) = 0 
setsockopt(3, SOL_IP, 0x40 /* IP_??? */, "mangle\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = -1 EIO (Input/output error) 
close(3)        = 0 
write(2, "iptables: "..., 10iptables:)   = 10 
write(2, "Input/output error"..., 18Input/output error) = 18 
write(2, ".\n"..., 2. 
)     = 2 
munmap(0x2ab9b000, 75264)    = 0 
exit(1)         

。エラーをさらにデバッグするための提案があれば助かります。ありがとう。

答えて

0

EIOは、カスタム "TC"ターゲット(またはそれが意味するもの)のモジュール、つまりxt_TC.cがAPIに準拠していないことを意味します。 checkentryは、2.6.35以上でゼロより大きい値(それらに割り当てられている意味はありません)を返すはずです。

0

問題は、Linux-2.6.35 /ネット/ netfilterの/ x_tables.cに以下の行を変更することで解決しているようだ

機能xt_check_match: 変更次の行から:

if (par->match->checkentry != NULL) { ret = par->match->checkentry(par); if (ret < 0) return ret; else if (ret > 0) { /* Flag up potential errors. */ return -EIO; } }

To:FUNCで同様

if (par->match->checkentry != NULL && !par->match->checkentry(par)) return -EINVAL;

ンのxt_check_target:これらは、前のカーネル内に存在するチェックした

if (par->target->checkentry != NULL && !par->target->checkentry(par)) return -EINVAL;

:に

if (par->target->checkentry != NULL) { ret = par->target->checkentry(par); if (ret < 0) return ret; else if (ret > 0) { /* Flag up potential errors. */ return -EIO; } }

:から行を変更しました。同じ問題を解決して上記の問題を解決します。ありがとう。

関連する問題