- 博客(5)
- 收藏
- 关注
原创 route
// sk->sk_dst_cache存储路由信息 -- 抵达目的地的路径static inline void__sk_dst_set(struct sock *sk, struct dst_entry *dst){ struct dst_entry *old_dst; old_dst = sk->sk_dst_cache; sk->sk_dst_cache = d...
2019-04-30 17:18:47
169
原创 ip_forward 函数
ip_forward 函数:ip_forward 是所有不是传给本地系统的输入包,的接口函数。由ip_rcv_finish通过dst_input(skb->dst->input)调用。输入参数,是一个skb结构,其中存储有所有必须信息,通常是通过skb_cow复制产生,保证后续协议处理函数能够接收到原始L3封包。PS:后续协议处理函数是与ip_rcv并列的L3函数,而非ip_rc...
2019-04-29 09:00:08
2796
原创 Linux L3协议栈 - IPv4 receive2 -- ip_rcv_finish
ip_rcv_finish主要工作:1> 本地报文(上报L4)或需要转发 – 对于需要转发的报文,需要找到出口设备和下一跳。2> 分析和处置一些IP iption。notes:通往目的地的路由信息,存储在skb->dst中,可以通过查询路由子系统(ip_route_input)得到该信息,并制定skb->dst->input/output(下一步的处理函数)...
2019-04-26 10:14:25
307
原创 Linux L3协议栈 - IPv4 receive
ip_rcv在L2处理结束后,skb将会被传递给L3处理,对skb->protocol等于ipv4的情形,ip_rcv将会被netif_receive_skb或者handle_bridge调用。在ip_rcv函数中,将不会出现任何路由决策或选项处理的逻辑,该部分将会在函数末尾的ip_rcv_finish中被调用。在此之前,需要经过netfilter中,注册过的ipv4&pre_r...
2019-04-23 13:40:36
505
原创 Linux L3协议栈 - IPv4 part
Linux L3协议栈 - IPv4 part发送 Tx发送 Tx数据报文,是通过dst_output函数,将数据交给邻域子系统的,而dst_output,可以通过三种不同的方式调用:1) ip_push_pending_frams - 被两种包裹函数调用,即ip_append_data 和 ip_append_page。用于UDP,ICMP,raw IP协议的传输。2) ip_queue...
2019-04-23 09:21:04
418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人