FreeBSD Ethernet Manipulation - PullRequest
       29

FreeBSD Ethernet Manipulation

0 голосов
/ 29 декабря 2011

Мне нужен метод для выполнения следующей задачи, предположим, если у меня есть компьютер с k (k является большим) числом интерфейсов Ethernet. Я хочу иметь метод для определения, какой идентификатор (em0) назначен какому физическому интерфейсу.

Единственный «простой» метод, который я нашел, - это мигать светодиодом на физическом интерфейсе.

Например

etherblink em0

Будет мигать ссылка или индикатор активности на физическом интерфейсе Ethernet, назначенном em0.

Я знаю, что в Linux есть ethertool, но он не работает с FreeBSD. Кроме того, во FreeBSD есть драйвер светодиода, но он поддерживает только ограниченное количество модулей Ethernet.

Есть идеи? Я думал о привязке сокета к интерфейсу и записи в сокет, но это не сработало.

C или Perl

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

Хотя я этого не сделал, но, согласно справочнику FreeBSD, можно привязать конкретный узел драйвера к конкретному аппаратному IRQ, используя подсказки конфигурации ядра. См. Device.hints (5) и Настройка сети FreeBSD , чтобы узнать, как найти IRQ каждого устройства Ethernet.

1 голос
/ 29 декабря 2011

Предположим, что рассматриваемый интерфейс fxp0 ... запустите его как root

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

Я предполагаю, что вам не нужно передавать данные через интерфейс, пока он мигает ...

0 голосов
/ 11 января 2012

К сожалению, я не нашел общего решения этой проблемы, однако, из моего исследования (читая журнал изменений 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)

Однако у меня нет оборудования, чтобы проверить это. В итоге я переписал драйвер Ethernet для интерфейса, который я использую для поддержки аппаратной функции светодиодов.

...