1. 用户层do_iptunnel
    1. IPPROTO_IPV6:sit,isatap=1
      1. tnl_add_ioctl(SIOCADDTUNNEL, "sit0", p.name, &p);
    2. 参数
      1. remote
      2. local
      3. dev
      4. ttl/hoplimit
      5. name
  2. ip6_tunnel_init
    1. xfrm6_tunnel_register
      1. ip4ip6_handler
        1. ip4ip6_rcv
      2. ip6ip6_handler
        1. ip6ip6_rcv
    2. ip6_tnl_init_net
      1. 注册设备:ip6tnl0
      2. ip6_tnl_dev_setup
        1. ip6_tnl_xmit
        2. ip6_tnl_ioctl
  3. sit_init
    1. xfrm4_tunnel_register
      1. sit_handler
        1. ipip6_rcv
    2. sit_init_net
      1. ipip6_tunnel_setup
        1. ipip6_tunnel_xmit
        2. ipip6_tunnel_ioctl
          1. SIOCADDTUNNEL
          2. ipip6_tunnel_locate
          3. alloc_netdev
          4. SIOCDELTUNNEL
      2. 注册sit0
  4. sys_ioctl
    1. filp->f_op->unlocked_ioctl
      1. sock_ioctl
        1. cmd > SIOCDEVPRIVATE
          1. dev_ioctl
          2. dev->do_ioctl
          3. ipip6_tunnel_locate
        2. sock->ops->ioctl
  5. sys_socket
    1. sock_map_fd
      1. sock_attach_fd
        1. 绑定socket_file_ops
    2. sock_create
      1. pf->create
  6. inet6_init
    1. sock_register
      1. inet_create
        1. inetsw[sock->type]
        2. sock->ops = answer->ops
        3. sk_alloc
          1. sk->sk_prot = prot
      2. inet6_create
    2. proto_register
      1. 注册struct proto到proto_list
    3. udpv6_init
      1. inet6_add_protocol
      2. inet6_register_protosw
        1. inetsw6
    4. tcpv6_init
  7. inet6_ioctl
    1. sk->sk_prot->ioctl
      1. udp_ioctl