免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2350 | 回复: 3
打印 上一主题 下一主题

[网络子系统] 最新稳定版本内核3.14中网络子系统改变了好多!? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-03 17:21 |只看该作者 |倒序浏览
我的模块在linux-2.6.30系统上都能够成功的编译通过,但是在3.14版本上却无法通过!
查看了下原因:在3.14内核版本的skbuff.h文件中的sk_buff结构体做了改动,
在旧版本中sk_buff结构体中有关于路由的结构体    union {    struct dst_entry  *dst;
                                                                                struct rtable *rtable;
                                                                          };
但在新版本中却没有呀!而我的模块中要用到这结构体,这该怎么改呀?  不知道有人遇到这个问题没?求大神指导呀?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2015-05-03 19:12 |只看该作者
编译不过是好事......碰到强转的编译器不报错,就等着panic吧

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:13:29
3 [报告]
发表于 2015-05-03 19:39 |只看该作者
可以看看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来记录路由信息的,源码那里也有注释说明这个参数的

论坛徽章:
0
4 [报告]
发表于 2015-05-03 22:27 |只看该作者
回复 3# philarlala
嗯嗯, 谢谢你的回复,我再好好看一下3.14内核中关于路由的实现,到时候有问题再来讨论讨论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP