【问题标题】:Couldn't open device eth0: eth0: socket: Invalid argument无法打开设备 eth0:eth0:socket:无效参数
【发布时间】:2018-03-30 18:32:39
【问题描述】:

我正在尝试使用来自 GitHub 的简单 DHCP client。当我尝试运行此客户端时,它失败了

eth0 MAC : C8:6B:00:E5:52:5E
Couldn't open device eth0: eth0: socket: Invalid argument

有什么建议吗? 谢谢!

【问题讨论】:

标签: c linux client dhcp


【解决方案1】:

显然pcap_open_live() 会返回NULL

pcap_open_live() 成功返回 pcap_t * 并返回 NULL 失败。如果返回NULL,则errbuf填入一个 适当的错误信息。 errbuf 也可以设置为警告文本 当pcap_open_live() 成功时;要检测这种情况,调用者应该 在调用之前在errbuf 中存储一个零长度的字符串 pcap_open_live() 并在 errbufis 时向用户显示警告 不再是零长度字符串。 errbuf被假定能够持有 至少PCAP_ERRBUF_SIZE 字符。

您可能想要调查您的卡。

以 root 身份检查:

su -c "lspci | grep -i ether"

检查这个设备是否真的是eth0

/usr/sbin/ethtool -i eth0

dmesg | grep eth0

【讨论】:

  • 好吧,我已经在我的 Ubuntu 和 VM(Fedora)上尝试了所有这些命令。我的结果: su -c "lspci | grep -i ether" 00:03.0 以太网控制器:英特尔公司 82540EM 千兆以太网控制器(rev 02)
  • /usr/sbin/ethtool -i enp0s3 驱动程序:e1000 版本:7.3.21-k8-NAPI 固件版本:expansion-rom-version:bus-info:0000:00:03.0 支持-统计:是支持-测试:是支持-eeprom-access:是支持-注册转储:是支持-priv-flags:否
  • dmesg | grep enp0s3 [2.379258] e1000 0000:00:03.0 enp0s3:从 eth0 [25.205919] 重命名 IPv6:ADDRCONF(NETDEV_UP):enp0s3:链接未准备好 [25.207815] IPv6:ADDRCONF(NETDEV_UP):enp0s3:链接未准备好 [25. ] e1000:enp0s3 NIC 链路已启动 1000 Mbps 全双工,流控制:RX [25.208643] IPv6:ADDRCONF(NETDEV_CHANGE):enp0s3:链路准备就绪
  • @JebuNato 尝试在argv[1]; 中使用enp0s3,看起来链接"enp0s3: link is not ready" 也有一些初始问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 2015-09-28
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多