最近在编译 MT7620 有关内核的时候,按默认设置编译都没什么问题,然后在menuconfig
里编译多个包就出错了,换了好多关键字 Google 都没啥,只好发帖求大侠指点下迷津。。。谢谢 XD
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC net/bridge/br_netfilter.o
net/bridge/br_netfilter.c: In function 'br_nf_pre_routing_finish_bridge':
net/bridge/br_netfilter.c:287: error: too few arguments to function
make[4]: *** [net/bridge/br_netfilter.o] Error 1
make[3]: *** [net/bridge] Error 2
make[2]: *** [net] Error 2
make[2]: Leaving directory '/home/XXXX/mt7620/linux-2.6.36.x'
make[1]: *** [linux] Error 1
make[1]: *** Leaving directory '/home/XXXX/mt7620'
make: *** [kernel] Error 2
编译的包是在:
[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter ) --->
[*] Advanced netfilter configuration
[*] Bridged IP/ARP packets filtering
问题应该就出在 net/bridge/br_netfilter.c ,不知是哪的原因生成不了 br_netfilter.o 文件,不编译 Bridged IP/ARP packets filtering 这项就一路顺畅~~~=. =
PS:爛移動寬帶,點了“發佈主題”,網頁顯示“頁面載入出錯”, V2EX 連接不上了,艹
HTTPS 也一樣。
line 280: } else if (dst ->neighbour ) {
line 281: /* the neighbour function below overwrites the complete
line 282: * MAC header, so we save the Ethernet source address and
line 283: protocol numer. */
line 284: skb_copy_from_linear_data_offset (skb, -(ETH_HLEN-ETH_ALEN ), SKB->nf_bridge->data, ETH_HLEN-ETH_ALEN );
line 285: /* tell br_dev_xmit to continue with forwarding */
line 286: nf_bridge->mask |= BRNF_BRIDGED_DNAT;
line 287: return dst -> neighbour -> output (skb );
line 288: }
br_netfilter.c 文件下载链接 -->Hit Me<--
在此谢谢“咪那”
1
Andiry 2015-08-21 00:38:34 +08:00 via Android
原因不是很清楚么,连问题出在哪一行都告诉你了
|
2
zro OP @Andiry 谢谢回复,那地方有看,但没看出有什么问题,原谅我是 linux 小白:)
部分源码如下: line 280: `} else if (dst ->neighbour ) {` line 281: `/* the neighbour function below overwrites the complete` line 282: `* MAC header, so we save the Ethernet source address and` line 283: `protocol numer. */` line 284: `skb_copy_from_linear_data_offset (skb, -(ETH_HLEN-ETH_ALEN ), SKB->nf_bridge->data, ETH_HLEN-ETH_ALEN );` line 285: `/* tell br_dev_xmit to continue with forwarding */` line 286: `nf_bridge->mask |= BRNF_BRIDGED_DNAT;` line 287: `return dst -> neighbour -> output (skb );` 源码一点没改动过,是不是要打什么 PATCH 之类的?囧 rz |
3
zro OP line 288: }
请忽略楼上的`符号,以为”回复“这里也可以直接用 markdown 的语法 |
4
HentaiMew 2015-08-21 01:43:07 +08:00
什么编译器?
|
6
Andiry 2015-08-21 02:06:31 +08:00
@zro 很显然 dst -> neighbour -> output (skb ) 这一句的 output 原型与这里的调用不符。实际的 output 函数不止接受一个 skb 参数。至于 output 具体是指向什么函数这里看不出来。
我看了一下最新的 kernel 没有 br_netfilter.c ,所以你需要自己去看这里 output 指向什么函数。 |
7
zro OP |
8
Andiry 2015-08-21 03:57:53 +08:00 1
@zro 你发的文件被公司防火墙拦掉了。我搜了一下,应该改成
return dst -> neighbour -> output (dst -> neighbour , skb ); |
9
adrianzhang 2015-08-21 09:19:10 +08:00
编译选项里看看有关网桥的部分,可能有些东西没打勾,或者多打了勾而本地没有。
|
10
invite 2015-08-21 10:02:01 +08:00
我就进来学习一下。
|
11
kiritoalex 2015-08-21 18:38:45 +08:00 via Android
是不是依赖没弄好,我说的是 Linux 内核选项,你用 /搜一下看看
|
12
zro OP |