TC 动作 - 环境规则¶
对于任何新的 tc 动作的作者,环境规则如下:
如果你窃取或借用任何数据包,你将偏离正道,你应该克隆它。
例如,如果您的动作将数据包排队以便稍后处理,或者通过重定向数据包有意分支,那么您需要克隆该数据包。
如果您修改任何数据包,则在其他人引用 skb 的情况下,您应该调用 pskb_expand_head。之后,您就“拥有”了 skb。
丢弃你不拥有的数据包是不可接受的。您只需将 TC_ACT_SHOT 返回给调用者,他们将丢弃它。
对于动作的调用者(qdiscs 等),环境规则如下:
您有责任释放任何作为 TC_ACT_SHOT/STOLEN/QUEUED 返回的内容。 如果没有返回 TC_ACT_SHOT/STOLEN/QUEUED,那么一切都很好,您不需要做任何事情。
如果有任何不清楚的地方,请在 netdev 上发帖。