以太网 header 在哪里以及如何在 Linux 堆栈中获得 added/deleted?

Where and how does ethernet header get added/deleted in Linux stack?

我有两个与 Linux 网络堆栈中的代码实现相关的问题:

  1. 我看到 "struct eth_header_ops" 用于将以太网 header 添加到 IP 数据包。但我无法找到其中的函数是如何被调用的,以及哪个函数应该做什么。这个的代码流程是什么?

  2. 同样,以太网 header 什么时候在传入帧上被删除?你能显示从网卡driver到header实际被删除的地方的路径吗?

谢谢。

我认为这是作为 ip_finish_output2() 的一部分完成的。但我真的希望一些专家能够为 TX 和 RX wrt 以太网报头操作的流程提供更多信息。