gpt4 book ai didi

创建以太网 II 帧头?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:53 25 4
gpt4 key购买 nike

如何在 Linux 中创建 Ethernet II 帧头? 802.3 帧头可以使用 eth_header() 创建,提供 skbuffer 以及源和目标 MAC 和长度。同样的功能是否也可以用于 Ethernet II 帧格式,我们使用类型字段而不是长度?

最佳答案

(当前)内核源代码通过以下方式定义了相关方法:

int eth_header(struct sk_buff *skb, struct net_device *dev,
unsigned short type,
const void *daddr, const void *saddr, unsigned len);

所以我们确实有一个type字段。到目前为止一切顺利。

让我们看看方法的实现,是否以及如何考虑 type 的值。该方法是这样开始的:

{
struct ethhdr *eth = ...

if (type != ETH_P_802_3 && type != ETH_P_802_2)
eth->h_proto = htons(type);
else
eth->h_proto = htons(len);
...

正如我们所见,对于除 802.2/3 之外的所有类型,type 的值(传递给函数)用于初始化帧头,这就是我们需要 Ethernet II 帧头。

问题的结论和答案:,可以使用eth_header()来创建以太网II帧头。

关于创建以太网 II 帧头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com