Linux2.4.0IP层转发流程
Email:getmoon@163.com QQ:505333 欲攬明月
下载地址:http://linuxsouce.home.sohu.com/download/ipforward.zip
其他文档下载:http://linuxsouce.home.sohu.com/download/index.html
/*关于本地接收到一个数据包是本地发送还是转发的分流,请看我画的IP层数据流程*/
/*转发一个数据包*/
/*所有的选项都没有没有细节到每个选项里面*/
int ip_forward(struct sk_buff *skb)
{
struct net_device *dev2; /* Output device */
struct iphdr *iph; /* Our header */
struct rtable *rt; /* Route we use */
struct ip_options * opt = &(IPCB(skb)->opt);
unsigned short mtu;
if (IPCB(skb)->opt.router_alert && ip_call_ra_chain(skb))
return NET_RX_SUCCESS;
if (skb->pkt_type != PACKET_HOST)/*广播报,多播,混杂模式得到的包不允许转发*/
goto drop;
/*
* According to the RFC, we must first decrease the TTL field. If
* that reaches zero, we must reply an ICMP c
Email:getmoon@163.com QQ:505333 欲攬明月
下载地址:http://linuxsouce.home.sohu.com/download/ipforward.zip
其他文档下载:http://linuxsouce.home.sohu.com/download/index.html
/*关于本地接收到一个数据包是本地发送还是转发的分流,请看我画的IP层数据流程*/
/*转发一个数据包*/
/*所有的选项都没有没有细节到每个选项里面*/
int ip_forward(struct sk_buff *skb)
{
struct net_device *dev2; /* Output device */
struct iphdr *iph; /* Our header */
struct rtable *rt; /* Route we use */
struct ip_options * opt = &(IPCB(skb)->opt);
unsigned short mtu;
if (IPCB(skb)->opt.router_alert && ip_call_ra_chain(skb))
return NET_RX_SUCCESS;
if (skb->pkt_type != PACKET_HOST)/*广播报,多播,混杂模式得到的包不允许转发*/
goto drop;
/*
* According to the RFC, we must first decrease the TTL field. If
* that reaches zero, we must reply an ICMP c