2012-04-26 54 views

回答

4

您可以通過netlink獲取鏈接向上/向下事件。您將創建一個PF_NETLINK套接字,綁定到RTMGRP_LINK組,然後等待RTM_NEWLINK/RTM_DELLINK消息。鏈接事件有IFF_RUNNINGIFF_LOWER_UP設置在ifinfomsg.flags,而鏈接關閉事件有兩個標誌清除(有趣的是,我得到RTM_NEWLINK消息這兩種類型的事件)。

+0

基於一些實驗(插入並插入USB-以太網適配器),我沒有看到'RTM_DELLINK'被接收到以太網。您能否介紹一下發生此事件的時間。 – 2015-10-19 09:46:47

+0

@Vivek:當一個鏈接被管理性刪除時發生'RTM_DELLINK',例如:'brctl addbr br0; IP鏈路設置br0下來; brctl delbr br0'。 – ninjalj 2015-10-19 18:38:17

+0

非常感謝您的回覆。我是使用'ioctls','netlink'等的新手。你能解釋一下,當它被稱爲「管理刪除鏈接」時它是什麼意思。我在很多地方看到它,但沒有弄清楚它的意義。 – 2015-10-20 14:16:22

2

如果此文件/sys/class/net/eth0/carrier的內容爲1,則接口eth0有載體。

+0

確實,但這似乎不是基於事件的,我不得不輪詢以瞭解變化。 – user1255770 2012-04-26 21:27:54