struct dst_entry struct--dst_entry /usr/src/linux-2.6.19/include/net/dst.h最终生成的IP数据报的路由称为目的入口(dst_entry),目的入口反映了相邻的外部主机在本地主机内部的一种“映象”,目的入口在内核中的定义如下struct dst_entry{ struct dst_entry *next; ...
如果需要转发 (forward),则进入转发流程。该流程需要处理 TTL,再调用 dst_input 函数。该函数会 (1)处理 Netfilter Hook (2)执行 IP fragmentation (3)调用 dev_queue_xmit,进入链路层处理流程。 1.2.3 传输层 (TCP/UDP) 传输层 TCP 处理入口在 tcp_v4_rcv 函数(位于 linux/net/ipv4/tcp ipv4.c 文件中...
wait_queue_head_t *sleep; /* 等待队列,通常指向socket的wait域 */ struct dst_entry *dst_cache; /* 目的地缓存,用于路由查找结果 */ rwlock_t dst_lock; /* 目的地缓存锁*/ atomic_t rmem_alloc; /* 已接收队列字节数 */ struct sk_buff_head receive_queue; /* 接收包队列 */ atomic_t wmem...
而对cork的使用也集中于这两个文件。 1. 在ip_append_data中,如果该sk的sk_write_queue不为空的话,就会直接使用cork中的下一跳信息(cork->dst),ip报文的option(cork->opt),MTU值(cork->fragsize)。且每次ip_append_data成功时,cork->length都会加上该次的数据长度。这说明了这个length为所有sk_write_queu...
struct dst_entry *dst; struct sec_path *sp; /* * This is the control buffer. It is free to use for every * layer. Please put your private variables there. If you * want to keep them across layers you have to do a skb_clone() ...
struct dst_entry *dst; struct sec_path *sp; /* * This is the control buffer. It is free to use for every * layer. Please put your private variables there. If you * want to keep them across layers you have to do a skb_clone() ...
struct dst_entry *dst_cache; /* 目的地缓存,用于路由查找结果 */ rwlock_t dst_lock; /* 目的地缓存锁*/ atomic_t rmem_alloc; /* 已接收队列字节数 */ struct sk_buff_head receive_queue; /* 接收包队列 */ atomic_t wmem_alloc; /* 已发送字节数 */ ...
structdst_entry*dst;@dst: FIXME: Describe this field目的地 structsec_path*sp;every layer. Put private vars here * This is the control buffer. It is free to use for every * layer. Please put your private variables there. If you * want to keep them across layers you have to do a sk...
| 解出route entry V --- | dst_addr | gateway | Output interface| ... --- 可以看出,返回消息由多个(nlmsghdr + route entry)组成,当某个nlmsghdr的nlmsg_type == NLMSG_DONE时就表示信息输出已经完毕。而每一个route entry由多个rtattr结构体组成,每个结构体表示该路由项的...
| 解出route entry V --- | dst_addr | gateway | Output interface| ... --- 可以看出,返回消息由多个(nlmsghdr + route entry)组成,当某个nlmsghdr的nlmsg_type == NLMSG_DONE时就表示信息输出已经完毕。而每一个route entry由多个rtattr结构体组成,每个结构体表示该路由项的...