Articles of 以太网

交叉编译一个驱动程序写在C为linux不配备configuration文件

我们正在尝试为TP-Link TG 3468千兆以太网适配器交叉编译驱动程序。 该供应商有一个Linux版本的驱动程序,但没有configuration文件存在。 只有make文件和c文件。 请提供一种交叉编译驱动程序的方法。 我们正在尝试为基于ARM处理器的单板计算机进行编译。

如何用connman设置以太网接口的MAC地址

我有一个embedded式系统,需要我从闪存中取出一个MAC地址,并在启动时将它传递给以太网接口。 传统上,我已经修改了在init脚本中对ifconfig的调用,只是hw ether闪存中取出的MAC作为hw etherparameter passing。 我正在使用的系统使用connman来处理networking连接。 embedded式系统在闪存中将始终有一个单一的以太网连接和一个自定义格式的匹配MAC地址。 connman被用来当接口可用时改变,所以有一个dynamic的系统来处理接口的上下和configuration是有帮助的。 是否有可能通过MAC来connman以类似的方式使用我之前做过的ifconfig,如果是的话,怎么样? 另外,是否有可能将MAC作为引导parameter passing给内核,以使connman永远不必知道这一点? 我可以将U-Boot中的MAC从闪存中取出,但以太网设备不可用于U-Boot。

使用原始套接字重新传输大型数据包

问题 :在原始套接字上, recvfrom可以捕获比发送更多的字节,防止我重传大于MTU的数据包。 背景 :我正在编写一个将捕获和重新传输数据包的应用程序。 基本上,主机A发送数据到X,logging它们并将它们转发到B,所有的Linux机器。 我使用原始套接字,所以我可以捕获所有的数据,它是用socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) 。 然后,有代码等待并读取传入的数据包: const int buffer_size = 2048; uint8_t* buffer = new uint8_t[buffer_size]; sockaddr_ll addr = {0}; socklen_t addr_len = sizeof(addr); int received_bytes = recvfrom(_raw_socket, buffer, buffer_size, 0, (struct sockaddr*)&addr, &addr_len); 数据包处理如下,循环完成,再次发送数据包: struct sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); addr.sll_family = htons(AF_PACKET); addr.sll_protocol = eth_hdr->type; addr.sll_ifindex = […]

MAC地址在带接口时随机改变

每当我启动我的networking接口,我得到一个不同的MAC地址! 如果我尝试强制使用MAC地址值 ifconfig usb0 hw ether AA:BB:DD..:FF 发行后会有所不同 ifconfig usb0 up 是什么让这个MAC地址改变? 我怎样才能阻止这种情况发生,并坚持HW烧毁的MAC地址? 我正在使用pandas板(omap4 / armv7)进行angtrom发行。 接口是一个smsc95xx USB 2.0以太网。 谢谢,Fabrice。

用于无PHY连接到DSA交换机的设备树

为我们configurationMarvell DSA交换机和Xilinx Zynq处理器创build设备树时遇到了一些问题。 他们是这样连接的: |——————————————| |——————————————————————————————| | e000b000—|———— SGMII ————|—port6 (0x16) port3 —— PHY3 | Zynq | | mv88e6321 | | e000c000—|—xx—|—port5 port4 —— PHY4 |——————————————| |——————————————————————————————| |___________ MDIO _______________| 我们有一个Linux内核的设备树,看起来像这样: ps7_ethernet_0: ps7-ethernet@e000b000 { #address-cells = <1>; #size-cells = <0>; clock-names = "ref_clk", "aper_clk"; clocks = <&clkc 13>, <&clkc 30>; compatible = "xlnx,ps7-ethernet-1.00.a"; interrupt-parent = […]

在Linux下捕获Wireshark时以太网FCS

使用Wireshark在Linux下捕获数据包时,是否有某种方法可以从以太网帧中获取帧检查序列(FCS)?

如何使用select()来等待以太网接口状态更改?

我的程序必须检测以太网接口何时转为RUNNING状态。 我可以通过使用ioctl()来轮询运行标志: if( ioctl( dummy_fd, SIOCGIFFLAGS, &ifr ) != -1 ) return ifr.ifr_flags & IFF_RUNNING; 但是没有轮询就立即要求信息。 目前该程序使用select()来等待其他事件。 所以使用select()来检测接口的状态变化是很好的。 有一种方法可以select ,我从网上读过。 但我不再find该页面。

具有多个运行接口的计算机上的Linux主机名parsing

我的Linux机器上有4个运行eth端口(eth0到eth3)。 所以如果我给命令host <hostname> ,哪个eth端口的IP地址将被返回? linux如何决定返回哪个eth端口的ip地址? 谢谢,LinuxPenseur

以太网在树莓派禁用

我们正在尝试开发覆盆子pi的应用程序。 我们正在计划使用电池运行Pi。 所以我们必须降低Pi的功耗。 据我们所知,以太网消耗了大量的电stream,那么有什么办法可以禁用以太网,而不会干扰树莓派模型B上的两个USB端口? (以太网和USB端口由单芯片LAN8512控制)。 任何帮助或build议,将不胜感激。

如果我写入eth0或ath0,会发生什么?

最近我在SO上遇到了几个关于在非常低的层次上使用套接字的问题。 这是一个例子 。 在寻找答案时,我意识到OSI Level 2上的套接字具有相对较低的能力。在Linux上,我们可以在创build套接字时指定一个协议,但显然不是所有的Level 2协议都出现在列表中。 虽然有可能组装和发送以太网帧,但(大概)不可能发送802.11数据包 – 虽然看起来wifi设备驱动程序确实将以太网帧转换为wifi数据包,反之亦然。 这让我想知道,如果有更多的可能性直接读取和写入设备文件,如eht0 , ath0 ? 是通常写入这些文件或设备驱动程序的套接字实现? 谁在接收方 – 一个NIC驱动器,外设总线控制器?