ping_prot

本文深入探讨了PING协议的具体实现方式,包括其结构定义、操作函数指针设置等内容。通过对PING协议核心结构protoping_prot及inet_dgram_ops的详细解析,帮助读者理解PING在网络通信中的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       {
.type =       SOCK_DGRAM,
.protocol =   IPPROTO_ICMP,
.prot =       &ping_prot,
.ops =        &inet_dgram_ops,
.flags =      INET_PROTOSW_REUSE,

       },



struct proto ping_prot = {
.name = "PING",
.owner = THIS_MODULE,
.init = ping_init_sock,
.close = ping_close,
.connect = ip4_datagram_connect,
.disconnect = udp_disconnect,
.setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt,
.sendmsg = ping_v4_sendmsg,
.recvmsg = ping_recvmsg,
.bind = ping_bind,
.backlog_rcv = ping_queue_rcv_skb,
.release_cb = ip4_datagram_release_cb,
.hash = ping_hash,
.unhash = ping_unhash,
.get_port = ping_get_port,
.obj_size = sizeof(struct inet_sock),
};




const struct proto_ops inet_dgram_ops = {
.family   = PF_INET,
.owner   = THIS_MODULE,
.release   = inet_release,
.bind   = inet_bind,
.connect   = inet_dgram_connect,
.socketpair   = sock_no_socketpair,
.accept   = sock_no_accept,
.getname   = inet_getname,
.poll   = udp_poll,
.ioctl   = inet_ioctl,
.listen   = sock_no_listen,
.shutdown   = inet_shutdown,
.setsockopt   = sock_common_setsockopt,
.getsockopt   = sock_common_getsockopt,
.sendmsg   = inet_sendmsg,
.recvmsg   = inet_recvmsg,
.mmap   = sock_no_mmap,
.sendpage   = inet_sendpage,
.set_peek_off   = sk_set_peek_off,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
.compat_ioctl   = inet_compat_ioctl,
#endif
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值