raw_prot

来源:互联网 发布:手机淘宝怎么写评论 编辑:程序博客网 时间:2024/06/06 13:20
       {
      .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