Linux内核协议栈(11)路由系统
2016-03-29 22:28
567 查看
/* * 查询路由表 * * rp:路由表 * * dst:目的地址 * * src:源地址 * * tos: * * oif: * * protocol:协议 */ static inline int ip_route_connect(struct rtable **rp, __be32 dst, __be32 src, u32 tos, int oif, u8 protocol, __be16 sport, __be16 dport, struct sock *sk, int flags) { struct flowi fl = { .oif = oif, .mark = sk->sk_mark, .nl_u = { .ip4_u = { .daddr = dst, .saddr = src, .tos = tos } }, .proto = protocol, .uli_u = { .ports = { .sport = sport, .dport = dport } } }; int err; struct net *net = sock_net(sk); if (inet_sk(sk)->transparent) fl.flags |= FLOWI_FLAG_ANYSRC; if (!dst || !src) { err = __ip_route_output_key(net, rp, &fl); if (err) return err; fl.fl4_dst = (*rp)->rt_dst; fl.fl4_src = (*rp)->rt_src; ip_rt_put(*rp); *rp = NULL; } security_sk_classify_flow(sk, &fl); return ip_route_output_flow(net, rp, &fl, sk, flags); }
相关文章推荐
- python语言下linux&windows下安装pcap包
- centos 6 环境下用maven编译安装hadoop2.7.2源码包
- 关于RT2870 linux驱动Ad-Hoc模式下出错的调试
- linux find cp创建对应目录并复制
- CentOS系统资源监控软件四大软件htop,top,ps,dstat
- 《Linux内核分析》第六周学习笔记
- CentOS7或RHEL 7上修改主机名
- Linux内核分析(第六周)
- Centos环境中Rstudio的安装
- linux gpio export
- linux开机自启动
- linux字体配置问题之修改字族名称导致的覆盖问题
- 刘遄:读完《鸟哥的Linux私房菜》的感受。
- 2013337朱荟潼 Linux第三章读书笔记——进程管理
- insmod module.ko 出现Invalid parameters, dmesg显示信息:disagrees about version of symbol..
- linux下时间子系统
- linux基础命令练习1
- linux系统基础及简单安装步骤
- 【9】Linux-设备驱动概述
- Linux学习之路:变量值的删除、替代和替换