Назад | Перейти на главную страницу

Выполнение команды на изменение состояния ссылки в freebsd

В freebsd, когда кабель подключается / отключается, в буфер dmesg записываются следующие строки:

em0: состояние канала изменено на ВНИЗ em0: состояние канала изменено на ВВЕРХ

Я хотел бы запустить сценарий, когда это произойдет, но не могу найти ничего, что программно раскрывает эти изменения состояния. Даже C API.

Я вижу, что ifconfig печатает «status: no carrier» и «status: active» в зависимости от того, подключен ли кабель. Но я бы предпочел избежать опроса, так как 1) он сжигает процессорное время, что важно для ноутбука, и 2) он может пропустить изменения, если интервал опроса слишком длинный.

Есть ли способ получить уведомление о подключении и отключении кабеля?

Вы, вероятно, захотите проверить /etc/devd.conf. devd это основной способ реагирования на события ядра / оборудования во FreeBSD.

Там есть пример, который показывает, как сопоставить сетевое событие UP / DOWN и запустить задачу, как показано ниже, а на странице руководства есть полезная информация.

notify 0 {
    match "system"          "IFNET";
    match "type"            "LINK_UP";
    media-type              "ethernet";
    action "/etc/rc.d/dhclient quietstart $subsystem";
};

http://www.freebsd.org/cgi/man.cgi?query=devd.conf&sektion=5