我需要一种方法来执行以下任务,假设我的计算机具有k(k为大)数量的以太网接口。我想有一种方法来识别哪个标识符(em0)被分配给哪个物理接口。
我提出的唯一“简单”方法是使物理接口上的LED灯闪烁。
例如
etherblink em0
将闪烁分配给em0的物理以太网接口上的链接或活动指示灯。
我知道linux上有ethertool,但这对FreeBSD不起作用。除了FreeBSD上有LED驱动程序外,它只支持有限数量的以太网模块。
有什么想法吗?我想过将套接字绑定到接口并写入套接字,但这不起作用。
C或Perl
答案 0 :(得分:2)
我还没有这样做,但是,根据FreeBSD手册,可以使用内核配置提示将特定的驱动程序节点绑定到特定的硬件IRQ。请参阅device.hints(5)和FreeBSD network setup以了解如何定位每个以太网设备IRQ。
答案 1 :(得分:1)
假设有问题的界面是fxp0
...以root身份运行
use strict;
my $intf = "fxp0";
while (1) {
foreach my $state (qw/up down/) {
system("ifconfig $intf $state\n");
sleep 3;
}
}
我假设你不关心在界面闪烁时转移数据...
答案 2 :(得分:0)
遗憾的是,我没有从我的研究中找到这个问题的一般解决方案(通过阅读FreeBSD 8.2和论坛的更改日志)似乎:
"some cards blink the LEDs on access, so pings could make a repeated pattern.
The LEDs might even go off if the card is downed with ifconfig(8)."
特别是em和igb接口,如:
所述"The em(4) and igb(4) drivers now support the led(4) interface via /dev/led/emN and
/dev/led/igbN for identification LED control. The following command line makes the
LED blink on em0:[r211241]" (FreeBSD 8.2 Release changelog)
但是我没有硬件来测试它。我最终做的是重写了用于支持LED硬件功能的接口的以太网驱动程序。