何当共剪西窗烛
唯有踏浪执子归 人不怜我我自怜

梅林固件384分支非华硕路由移植,WAN口显示注意事项

事情起因于移植梅林固件到DIR-868L上,发现一个不大不小的BUG。就是在有限的代码中修改了wan和lan口的顺序后,实际的物理网口顺序改变,但是网络地图上显示的顺序还是没变。

遍历了所有的C源码,能改的都改了,还是不行,又问了问之前移植梅林的人,热脸贴冷屁股,爱搭不理。

而今终于发现问题所在:

httpd: prevent httpd crash in ej_get_wan_lan_status() when ATE return…

…s an error

If there is no connected Ethernet client, ATE Get_WanLanStatus returns ATE_ERROR
in addition to the port status, causing the json parsing to crash httpd.

rc/sysdeps/broadcom/broadcom.c:GetPhyStatus() is now closed source, so as a
workaround we take care of handling that error message in
ej_get_wan_lan_status() instead.

如以上梅林github上的一个commit中提到的,原先的分支380中,是有rc/sysdeps/broadcom/broadcom.c这个文件的,其中wan_lan_ports的显示顺序写在GetPhyStatus()方法中,可以通过改这个文件该顺序。

然而在384及以后的分支中,broadcom.c闭源了,成了rc/prebuild/RT-AC68U/broadcom.o文件,这是编译过后的elf文件。

而要想改线序,就必须反编译broadcom.o文件,而具体怎么改,我还没研究出来。

只是弄清楚一件事情,顿时变得十分舒心,因为除了原版梅林外,其它的改版梅林现阶段基本上源码停留在380分支上,broadcom.c还没有闭源,所以380分支以前移植到其它机型,可以修改broadcom.c文件而改掉梅林在网络地图中和SYSinfo中的wan口显示顺序,但是384分之后该文件闭源了,移植修改估计我是第一个遇到此问题的,后续将通过研究反编译啃掉此硬骨头。

再说一句,后续移植的梅林固件可能新增一套ROG皮肤,就是红色的那款比较拉风的皮肤,嘿嘿。

 

未经允许不得转载:西窗浪人 » 梅林固件384分支非华硕路由移植,WAN口显示注意事项
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址