从软件层面看怎么也应该是再调用一个 result = chip_initComponents 的 chip 专用函数把, 这么写怎么看都不合理. 不过考虑到嵌入式也有全栈, 懂硬件的顺带再写个软件..
Skb_clone()函数只是复制 sk_buff 结构,并不复制 skb 的数据缓冲区。Clone 后的 sk_buff 结构与原始的 sk_buff 指向同一数据缓冲区。原始的和 clone 后的 skb 描述符的 cloned 值都会被置 1 ,clone 的 skb 描述符的 users 值置 1 ,同时数据缓冲区的引用计数 dataref 增加 1 。
猜测 skb_clone 只复制元数据, 不需要过多考虑调用开销
enum nf_ip_hook_priorities {
NF_IP_PRI_FIRST = INT_MIN,
NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
NF_IP_PRI_CONNTRACK_DEFRAG = -400,
NF_IP_PRI_RAW = -300,
NF_IP_PRI_SELINUX_FIRST = -225,
NF_IP_PRI_CONNTRACK = -200,
NF_IP_PRI_MANGLE = -150,
NF_IP_PRI_NAT_DST = -100,
NF_IP_PRI_FILTER = 0,
NF_IP_PRI_SECURITY = 50,
NF_IP_PRI_NAT_SRC = 100,
NF_IP_PRI_SELINUX_LAST = 225,
NF_IP_PRI_CONNTRACK_HELPER = 300,
NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
NF_IP_PRI_LAST = INT_MAX,
};
table 的设计确实不好理解, 感觉也并不是太合理, chain 才是关键.