网络子系统49_ip协议报头id选取

//more = skb_shinfo(skb)->tso_segs,由tcp传递
1.1 static inline void ip_select_ident_more(struct iphdr *iph, struct dst_entry *dst, struct sock *sk, int more)
{
	if (iph->frag_off & htons(IP_DF)) {//禁止分片
		if (sk && inet_sk(sk)->daddr) {
			iph->id = htons(inet_sk(sk)->id);//使用sock中指定的id
			inet_sk(sk)->id += 1 + more;//sock中id递增
		} else
			iph->id = 0;
	} else
		__ip_select_ident(iph, dst, more);//可分片ip报文选择id
}
//调用路径ip_select_ident_more->__ip_select_ident
//函数主要任务:
//	1.处理路由项与inet_peer的绑定
//	2.通过inet_peer,或者全局ip_fallback_id获取id
1.2 void __ip_select_ident(struct iphdr *iph, struct dst_entry *dst, int more)
{
	struct rtable *rt = (struct rtable *) dst;

	if (rt) {//存在到目的地址的路由
		if (rt->peer == NULL)//inet_peer结构,表示该缓存路由项的目的ip地址对应的主机
			rt_bind_peer(rt, 1);//寻找和该端点相匹配的inet_peer结构,如果不存在,尝试创建一个新的inet_peer

		if (rt->peer) {//通过inet_peer的计数器&#
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值