写在前面:
帮助函数的介绍是根据其引入内核的时间来排序介绍的,从前面包括本篇博客的介绍我们可以看到bpf最初的设计就是为网络而生的。
我们继续来介绍。
24.u32 bpf_get_route_realm(struct sk_buff *skb)
描述:检索realm或route,也就是skb tclassid字段。所检索到的标识符是用户提供的标记,与net_cls cgroup 使用的标记类似(可参考bpf_get_cgroup_classid()帮助函数的说明),但此处标记由route(目标条目)保存而不是由task。
检索此标识符适用于classt TC出口钩子(可参考tc-bpf(8)),或者适用于传统的出口 qdiscs(qdiscs:表示队列出口规则,queueing discipline,Linux流量控制系统的核心),但不适用于TC入口路径。假若使用clsact TC出口钩子,这样做有一定的好处,在内部,目标条目尚未在传输路径中删除。因此,在释放skb之前,不需要通过netif_keep_dst() 人为地持有qdisc的目标条目。
这个帮助函数要求在内核配置中使能CONFIG_IP_ROUTE_CLASSID。
返回值:返回与skb关联的数据包的路由区域,如果未找到,则返回0.