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