raw_prot

       {
      .type =       SOCK_RAW,
      .protocol =   IPPROTO_IP, /* wild card */
      .prot =       &raw_prot,
      .ops =        &inet_sockraw_ops,
      .flags =      INET_PROTOSW_REUSE,

       }




struct proto raw_prot = {
.name   = "RAW",
.owner   = THIS_MODULE,
.close   = raw_close,
.destroy   = raw_destroy,
.connect   = ip4_datagram_connect,
.disconnect   = udp_disconnect,
.ioctl   = raw_ioctl,
.init   = raw_init,
.setsockopt   = raw_setsockopt,
.getsockopt   = raw_getsockopt,
.sendmsg   = raw_sendmsg,
.recvmsg   = raw_recvmsg,
.bind   = raw_bind,
.backlog_rcv   = raw_rcv_skb,
.release_cb   = ip4_datagram_release_cb,
.hash   = raw_hash_sk,
.unhash   = raw_unhash_sk,
.obj_size   = sizeof(struct raw_sock),
.h.raw_hash   = &raw_v4_hashinfo,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_raw_setsockopt,
.compat_getsockopt = compat_raw_getsockopt,
.compat_ioctl   = compat_raw_ioctl,
#endif
};




/*
 * For SOCK_RAW sockets; should be the same as inet_dgram_ops but without
 * udp_poll
 */
static const struct proto_ops inet_sockraw_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   = datagram_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,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
.compat_ioctl   = inet_compat_ioctl,
#endif
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值