2011-12-29 54 views
0

我需要一种方法来执行以下任务,假设我有一台带有k(k是大)个以太网接口的计算机。我想有一个方法来确定哪个标识符(em0)被分配给哪个物理接口。FreeBSD以太网操作

我想出的唯一“简单”的方法是闪烁物理接口上的LED灯。

例如

etherblink em0 

会闪烁链路或活动分配给EM0物理以太网接口上的LED。

我知道在Linux上有ethertool,但这对FreeBSD不起作用。除了FreeBSD上的LED驱动程序外,它只支持有限数量的以太网模块。

任何想法?我想过将一个套接字绑定到接口并写入套接字,但是这不起作用。

和C或Perl

+0

是的,你可以,而我很尴尬,我不记得如何。你在FreeBSD论坛上问过吗? http://forums.freebsd.org/ – Rob 2011-12-29 19:13:09

+0

是的,我确实,有时间等待看看我能否得到一个可行的答案/解决方案。 – Bill 2011-12-29 20:57:41

回答

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硬件功能的接口的以太网驱动程序。

2

强硬。我没有这样做,但是,根据FreeBSD使用手册,有可能使用的内核配置提示到特定的驱动程序节点绑定到特定的硬件IRQ。请参阅device.hints(5)和FreeBSD network setup以了解如何查找每个以太网设备IRQ。

+0

当我有更多的空闲时间时,我一定会考虑这一点。 – Bill 2012-01-10 21:46:31

1

假设有问题的接口是fxp0 ...运行此为根

use strict; 
my $intf = "fxp0"; 
while (1) { 
    foreach my $state (qw/up down/) { 
     system("ifconfig $intf $state\n"); 
     sleep 3; 
    } 
} 

我想你不会在乎通过接口transfering数据,而它的闪烁......

+0

感谢您的回答,但是这并没有帮助我做什么,LED灯保持关闭。 – Bill 2012-01-10 21:46:21

+0

这是我第一次听到一个以太网接口听不到,当你打开它时没有连接...你尝试了更长的频率(比如说10秒?) – 2012-01-11 00:42:16

+0

我没有插入电缆,也没有插入电缆,它是Sokeris工程的SBC。 – Bill 2012-02-06 19:59:40