【Linux4.1.12源码分析】IP层报文发送之ip_local_out

IP层本地报文发送有两个函数ip_local_out和ip_local_out_sk,实际实现两者是等同的,因为本地发送的报文,skb必然关联着一个sock对象。

1、ip_local_out函数

static inline int ip_local_out(struct sk_buff *skb)
{
	return ip_local_out_sk(skb->sk, skb);	//本地报文发送,本地发送的报文都关联着一个sock对象
}
2、ip_local_out_sk函数

int ip_local_out_sk(struct sock *sk, struct sk_buff *skb)	//本地报文发送,本地发送的报文都关联着一个sock对象
{
	int err;

	err = __ip_local_out(skb);		//报文安全检测(netfilter)
	if (likely(err == 1))			//返回值为1,说明netfilter允许报文通过
		err = dst_output_sk(sk, skb);	//最终会调用ip_output函数

	return err;
}
3、__ip_local_out函数

int __ip_local_out(struct sk_buff *skb)
{
	return __ip_local_out_sk(skb->sk, skb);
}
4、__ip_local_out_sk函数

int __ip_local_out_sk(struct sock *sk, s
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值