最新稳定版本内核3.14中网络子系统改变了好多!?
我的模块在linux-2.6.30系统上都能够成功的编译通过,但是在3.14版本上却无法通过!查看了下原因:在3.14内核版本的skbuff.h文件中的sk_buff结构体做了改动,
在旧版本中sk_buff结构体中有关于路由的结构体 union { struct dst_entry*dst;
struct rtable *rtable;
};
但在新版本中却没有呀!而我的模块中要用到这结构体,这该怎么改呀?不知道有人遇到这个问题没?求大神指导呀? 编译不过是好事......碰到强转的编译器不报错,就等着panic吧 可以看看skb_dst函数的实现,不管怎么改,应该都有对应的成员来记录路由相关的信息的
static inline struct dst_entry *skb_dst(const struct sk_buff *skb)
{
/* If refdst was not refcounted, check we still are in a
* rcu_read_lock section
*/
WARN_ON((skb->_skb_refdst & SKB_DST_NOREF) &&
!rcu_read_lock_held() &&
!rcu_read_lock_bh_held());
return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK);
}
在3.14的内核是用成员_skb_refdst来记录路由信息的,源码那里也有注释说明这个参数的
回复 3# philarlala
嗯嗯, 谢谢你的回复,我再好好看一下3.14内核中关于路由的实现,到时候有问题再来讨论讨论。
页:
[1]