ip6(4p) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

ip6(4p)

ip6(4P)                        Network Protocols                       ip6(4P)

NAME
       ip6 - Internet Protocol Version 6

SYNOPSIS
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip6.h>


       s = socket(AF_INET6, SOCK_RAW, proto);


       t = t_open ("/dev/rawip6", O_RDWR);

DESCRIPTION
       The  IPv6  protocol is the next generation of the internetwork datagram
       delivery protocol of the Internet protocol  family.  Programs  can  use
       IPv6  through  higher-level  protocols such as the Transmission Control
       Protocol (TCP) or the User Datagram Protocol (UDP),  or  can  interface
       directly  to  IPv6.  See  tcp(4P)  and udp(4P). Direct access can be by
       means of the socket interface, using a "raw socket," or by means of the
       Transport Level Interface (TLI). The protocol options and  IPv6  exten‐
       sion  headers  defined in the IPv6 specification can be set in outgoing
       datagrams.

APPLICATION PROGRAMMING INTERFACE
       The STREAMS driver /dev/rawip6 is the TLI transport provider that  pro‐
       vides raw access to IPv6.


       Raw  IPv6  sockets  are  connectionless  and are normally used with the
       sendto() and recvfrom() calls (see send(3C) and recv(3C)), although the
       connect(3C) call can also be used to fix  the  destination  for  future
       datagrams.  In  this  case,  the  read(2)  or  recv(3C) and write(2) or
       send(3C) calls can be used. Ancillary data can also be sent or received
       over raw IPv6 sockets using  the  sendmsg(3C)  and  recvmsg(3C)  system
       calls.


       Unlike  raw IP, IPv6 applications do not include a complete IPv6 header
       when sending; there is no IPv6 analog to the IP  IP_HDRINCL socket  op‐
       tion. IPv6 header values can be specified or received as ancillary data
       to  a  sendmsg(3C)  or  recvmsg(3C) system call, or can be specified as
       sticky options on a per-socket basis by using the setsockopt(3C) system
       call. Such sticky options are applied to all  outbound  packets  unless
       overridden  by  ancillary data. If any ancillary data is specified in a
       sendmsg(3C) call, all sticky options not explicitly  overridden  revert
       to default values for that datagram only; the sticky options persist as
       set for subsequent datagrams.


       Since  sendmsg(3C)  is not supported for SOCK_STREAM upper level proto‐
       cols such as TCP, ancillary data is unsupported  for  TCP.  Sticky  op‐
       tions, however, are supported.


       Since  sendmsg(3C)  is  supported for SOCK_DGRAM upper level protocols,
       both ancillary data and sticky options are supported  for  UDP,  ICMP6,
       and raw IPv6 sockets.


       The socket options supported at the IPv6 level are:

       IPV6_BOUND_IF           Limit  reception and transmission of packets to
                               this interface. Takes an integer  as  an  argu‐
                               ment; the integer is the selected interface in‐
                               dex.


       IPV6_UNSPEC_SRC         Boolean.  Allow/disallow  sending  with  a zero
                               source address.


       IPV6_UNICAST_HOPS       Default hop limit for unicast  datagrams.  This
                               option  takes  an  integer  as an argument. Its
                               value  becomes  the  new  default   value   for
                               ip6_hops  that  IPv6  uses  on outgoing unicast
                               datagrams sent from that  socket.  The  initial
                               default is 60.


       IPV6_CHECKSUM           Specify  the  integer  offset in bytes into the
                               user data of the checksum  location.  Does  not
                               apply  to  the  ICMP6 protocol. Note: checksums
                               are required for all IPv6  datagrams;  this  is
                               different  from IP, in which datagram checksums
                               were optional. IPv6 computes the  ULP  checksum
                               if the value in the checksum field is zero.


       IPV6_SEC_OPT            Enable  or  obtain  IPsec security settings for
                               this socket. For more details on the protection
                               services of IPsec, see ipsec(4P).


       IPV6_DONTFRAG           Boolean. Control fragmentation.


       IPV6_USE_MIN_MTU        Controls whether path MTU discovery is used. If
                               set to 1, path MTU discovery is never used  and
                               IPv6  packets  are  sent  with the IPv6 minimum
                               MTU. If set to -1, path MTU  discovery  is  not
                               used  for  multicast  and multicast packets are
                               sent with the IPv6 minimum MTU. If  set  to  0,
                               path MTU is always performed.


       IPV6_V6ONLY             Boolean. If set, only V6 packets can be sent or
                               received


       IPV6_SRC_PREFERENCES    Enable  or obtain Source Address Selection rule
                               settings for this socket. For more  details  on
                               the   Source   Address   Selection  rules,  see
                               inet6(4P).



       The following options are boolean switches controlling the reception of
       ancillary data:

       IPV6_RECVPKTINFO         Enable/disable receipt of the index of the in‐
                                terface the packet arrived on, and of the  in‐
                                bound packet's destination address.


       IPV6_RECVHOPLIMIT        Enable/disable receipt of the inbound packet's
                                current hoplimit.


       IPV6_RECVHOPOPTS         Enable/disable receipt of the inbound packet's
                                IPv6 hop-by-hop extension header.


       IPV6_RECVDSTOPTS         Enable/disable receipt of the inbound packet's
                                IPv6 destination options extension header.


       IPV6_RECVRTHDR           Enable/disable receipt of the inbound packet's
                                IPv6 routing header.


       IPV6_RECVRTHDRDSTOPTS    Enable/disable receipt of the inbound packet's
                                intermediate-hops  options  extension  header.
                                This  option  is  obsolete.   IPV6_RECVDSTOPTS
                                turns  on  receipt  of both destination option
                                headers.


       IPV6_RECVTCLASS          Enable/disable receipt of the traffic class of
                                the inbound packet.


       IPV6_RECVPATHMTU         Enable/disable receipt of the path mtu of  the
                                inbound packet.



       The  following options can be set as sticky options with setsockopt(3C)
       or as ancillary data to a sendmsg(3C) system call:

       IPV6_PKTINFO         Set the source address and/or interface out  which
                            the packet(s) is sent. Takes a struct  in6_pktinfo
                            as the parameter.


       IPV6_HOPLIMIT        Set  the  initial hoplimit for outbound datagrams.
                            Takes an integer as  the  parameter.  This  option
                            sets  the  hoplimit  only  for  ancillary  data or
                            sticky options and does not change the default ho‐
                            plimit for the socket; see  IPV6_UNICAST_HOPS  and
                            IPV6_MULTICAST_HOPS to change the socket's default
                            hoplimit.


       IPV6_NEXTHOP         Specify  the  IPv6 address of the first hop, which
                            must be a neighbor of the sending  host.  Takes  a
                            struct   sockaddr_in6  as the parameter. When this
                            option specifies the same address as the  destina‐
                            tion IPv6 address of the datagram, this is equiva‐
                            lent to the existing SO_DONTROUTE option.


       IPV6_HOPOPTS         Specify  one  or more hop-by-hop options. Variable
                            length. Takes a complete IPv6  hop-by-hop  options
                            extension header as the parameter.


       IPV6_DSTOPTS         Specify  one or more destination options. Variable
                            length. Takes a complete IPv6 destination  options
                            extension header as the parameter.


       IPV6_RTHDR           Specify  the IPv6 routing header. Variable length.
                            Takes a complete IPv6 routing header as the  para‐
                            meter.  Currently, only type 0 routing headers are
                            supported.


       IPV6_RTHDRDSTOPTS    Specify one or more destination  options  for  all
                            intermediate  hops.  May be configured, but is not
                            applied unless an IPv6 routing header is also con‐
                            figured. Variable length. Takes  a  complete  IPv6
                            destination  options extension header as the para‐
                            meter.


       IPV6_PATHMTU         Get the  path  MTU  associated  with  a  connected
                            socket. Takes a ip6_mtuinfo as the parameter.


       IPV6_TCLASS          Set  the  traffic  class  associated with outgoing
                            packets. The parameter is an integer. If the para‐
                            meter is less then -1 or greater then 256,  EINVAL
                            is  returned. If the parameter is equal to -1, use
                            the default. If the parameter is between 0 and 255
                            inclusive, use that value.



       The following options affect the socket's multicast behavior:

       IPV6_JOIN_GROUP             Join a  multicast  group.  Takes  a  struct
                                   ipv6_mreq  as  the parameter; the structure
                                   contains a multicast address and an  inter‐
                                   face index.


       IPV6_LEAVE_GROUP            Leave  a  multicast  group.  Takes a struct
                                   ipv6_mreq as the parameter;  the  structure
                                   contains  a multicast address and an inter‐
                                   face index.


       MCAST_JOIN_GROUP            Functionally equivalent to IPV6_JOIN_GROUP.
                                   Takes a struct  group_req as the parameter.
                                   The structure contains a multicast  address
                                   and an interface index.


       MCAST_BLOCK_SOURCE          Block  multicast  packets  on  a particular
                                   multicast  group   whose   source   address
                                   matches the given source address. The spec‐
                                   ified group must be joined previously using
                                   IPV6_JOIN_GROUP  or MCAST_JOIN_GROUP. Takes
                                   a struct  group_source_req as  the  parame‐
                                   ter.  The  structure  contains an interface
                                   index, a multicast address,  and  a  source
                                   address.


       MCAST_UNBLOCK_SOURCE        Unblock multicast packets which were previ‐
                                   ously   blocked  using  MCAST_BLOCK_SOURCE.
                                   Takes a struct  group_source_req as the pa‐
                                   rameter. The structure contains  an  inter‐
                                   face  index,  a  multicast  address,  and a
                                   source address.


       MCAST_LEAVE_GROUP           Functionally         equivalent          to
                                   IPV6_LEAVE_GROUP. Takes a struct  group_req
                                   as  the parameter. The structure contains a
                                   multicast address and an interface index.


       MCAST_JOIN_SOURCE_GROUP     Begin receiving packets for the given  mul‐
                                   ticast  group  whose source address matches
                                   the  specified  address.  Takes  a   struct
                                   group_source_req   as  the  parameter.  The
                                   structure contains an  interface  index,  a
                                   multicast address, and a source address.


       MCAST_LEAVE_SOURCE_GROUP    Stop receiving packets for the given multi‐
                                   cast group whose source address matches the
                                   specified    address.    Takes   a   struct
                                   group_source_req  as  the  parameter.   The
                                   structure  contains  an  interface index, a
                                   multicast address, and a source address.


       IPV6_MULTICAST_IF           The outgoing interface for multicast  pack‐
                                   ets. This option takes an integer as an ar‐
                                   gument;  the integer is the interface index
                                   of the selected interface.


       IPV6_MULTICAST_HOPS         Default hop limit for multicast  datagrams.
                                   This  option  takes  an integer as an argu‐
                                   ment. Its value  becomes  the  new  default
                                   value for ip6_hops that IPv6 uses on outgo‐
                                   ing  multicast  datagrams  sent  from  that
                                   socket. The initial default is 1.


       IPV6_MULTICAST_LOOP         Loopback for multicast datagrams.  Normally
                                   multicast  datagrams  are delivered to mem‐
                                   bers on the sending host. Setting  the  un‐
                                   signed  character  argument to 0 causes the
                                   opposite behavior.



       The multicast socket options can be used with any datagram socket  type
       in the IPv6 family.


       At  the  socket  level,  the socket option SO_DONTROUTE can be applied.
       This option forces datagrams being sent to bypass routing and  forward‐
       ing  by  forcing the IPv6  hoplimit field to 1, meaning that the packet
       is not forwarded by routers.


       Raw IPv6 datagrams can also be sent and received using the TLI  connec‐
       tionless primitives.


       Datagrams  flow through the IPv6 layer in two directions: from the net‐
       work up to user processes and from user processes down to the  network.
       Using  this  orientation,  IPv6  is layered above the network interface
       drivers and below the transport protocols such as UDP and TCP. The  In‐
       ternet Control Message Protocol (ICMPv6) for the Internet Protocol Ver‐
       sion 6 (IPv6) is logically a part of IPv6. See icmp6(4P).


       Unlike  IP,  IPv6  provides no checksum of the IPv6 header. Also unlike
       IP, upper level protocol checksums  are  required.  IPv6  computes  the
       ULP/data  portion  checksum  if the checksum field contains a zero (see
       IPV6_CHECKSUM option above).


       IPv6 extension headers in received datagrams are processed in the  IPv6
       layer  according  to  the  protocol specification. Currently recognized
       IPv6 extension headers include hop-by-hop options  header,  destination
       options  header, routing header (currently, only type 0 routing headers
       are supported), and fragment header.


       By default, the IPv6 layer does not forward IPv6 packets that  are  not
       addressed  to  it. This behavior can be overridden by using routeadm(8)
       to enable the ipv6-forwarding option. IPv6 forwarding is configured  at
       boot  time  based  on the setting of routeadm's ipv6-forwarding option.
       ipadm(8) can also be used to enable ipv6 forwarding on a global  basis.
       The  ipadm  set-prop  subcommand  along with the forwarding property is
       used to enable system-wide forwarding  of  packets.  The  protocol  for
       which  forwarding needs to be enabled is specified using the -m option.
       See ipadm(8) for more details.


       Additionally, finer-grained forwarding can be configured in IPv6.  Each
       interface  can  be  configured  to  forward IPv6 packets by setting the
       IFF_ROUTER interface flag. This flag can be set and cleared  using  the
       ifconfig(8)   router  and -router options. If an interface's IFF_ROUTER
       flag is set, packets can be forwarded to or from the interface.  If  it
       is  clear,  packets is neither forwarded from this interface to others,
       nor forwarded to this interface. Setting  the  global  ipv6  forwarding
       variable  sets  all of the IPv6 interfaces' IFF_ROUTER flags. Also, the
       ipadm set-ifprop subcommand can be used to enable/disable per-interface
       ipv6 forwarding. See ipadm(8) for more details.  The  ipadm  set-ifprop
       interfaces are preferred.


       The  IPv6  layer sends an ICMP6 message back to the source host in many
       cases when it receives a datagram that can not be handled. A  time  ex‐
       ceeded   ICMP6 message is sent if the ip6_hops field in the IPv6 header
       drops to zero in the process of forwarding a  datagram.  A  destination
       unreachable message is sent by a router or by the originating host if a
       datagram can not be sent on because there is no route to the final des‐
       tination; it is sent by a router when it encounters a firewall prohibi‐
       tion;  it  is  sent  by  a destination node when the transport protocol
       (that is, TCP) has no listener. A packet too big message is sent  by  a
       router  if the packet is larger than the MTU of the outgoing link (this
       is used for Path MTU Discovery). A parameter problem message is sent if
       there is a problem with a field in the IPv6 header or any of  the  IPv6
       extension headers such that the packet cannot be fully processed.


       The  IPv6  layer  supports  fragmentation and reassembly. Datagrams are
       fragmented on output if the datagram is larger than the maximum  trans‐
       mission  unit  (MTU)  of  the  network interface. Fragments of received
       datagrams are dropped from the reassembly queues if the complete  data‐
       gram is not reconstructed within a short time period.


       Errors  in sending discovered at the network interface driver layer are
       passed by IPv6 back up to the user process.

SEE ALSO
       svcs(1), read(2), write(2), send(3C), bind(3C),  connect(3C),  getsock‐
       opt(3C), recv(3C), recvmsg(3C), sendmsg(3C), setsockopt(3C), icmp6(4P),
       if_tcp(4P),   inet6(4P),   ipsec(4P),  routing(4P),  tcp(4P),  udp(4P),
       smf(7), ifconfig(8), ipadm(8), ndd(8), routeadm(8), svcadm(8)


       Deering, S. and Hinden, R.  RFC  8200,  Internet  Protocol,  Version  6
       (IPv6)    Specification.    Network    Working    Group.   July   2017.
       https://tools.ietf.org/html/rfc8200


       Gilligan, R. RFC 3493, Basic Socket Interface Extensions for IPv6. Net‐
       work Working Group. February 2003. https://tools.ietf.org/html/rfc3493


       Stevens, W., Thomas, M., Nordmark, E., and Jinmei,  T.  RFC  3542,  Ad‐
       vanced   Sockets  API  for  IPv6.  Network  Working  Group.  May  2003.
       https://tools.ietf.org/html/rfc3542

DIAGNOSTICS
       A socket operation can fail with one of the following errors returned:

       EPROTONOSUPPORT    Unsupported protocol (for example, IPPROTO_RAW.)


       EACCES             A bind() operation was attempted with  a  "reserved"
                          port number and the effective user ID of the process
                          was not the privileged user.


       EADDRINUSE         A  bind() operation was attempted on a socket with a
                          network address/port  pair  that  has  already  been
                          bound to another socket.


       EADDRNOTAVAIL      A bind() operation was attempted for an address that
                          is not configured on this machine.


       EINVAL             A  sendmsg() operation with a non-NULL msg_accrights
                          was attempted.


       EINVAL             A getsockopt() or setsockopt() operation with an un‐
                          known socket option name was given.


       EINVAL             A getsockopt() or  setsockopt()  operation  was  at‐
                          tempted   with  the  IPv6  option  field  improperly
                          formed; an option field was shorter than the minimum
                          value or longer than the option buffer provided; the
                          value in the option field was invalid.


       EISCONN            A connect() operation was attempted on a  socket  on
                          which  a  connect()  operation had already been per‐
                          formed, and the socket  could  not  be  successfully
                          disconnected before making the new connection.


       EISCONN            A  sendto() or sendmsg() operation specifying an ad‐
                          dress to which the message should be  sent  was  at‐
                          tempted  on  a socket on which a connect() operation
                          had already been performed.


       EMSGSIZE           A send(), sendto(), or sendmsg() operation  was  at‐
                          tempted to send a datagram that was too large for an
                          interface,  but  was  not  allowed  to be fragmented
                          (such as broadcasts).


       ENETUNREACH        An attempt was made to establish  a  connection  via
                          connect(),  or  to  send  a  datagram  by  means  of
                          sendto() or sendmsg(), where there was  no  matching
                          entry  in the routing table; or if an ICMP "destina‐
                          tion unreachable" message was received.


       ENOTCONN           A send() or write()  operation,  or  a  sendto()  or
                          sendmsg()  operation  not  specifying  an address to
                          which the message should be sent, was attempted on a
                          socket on which a connect() operation  had  not  al‐
                          ready been performed.


       ENOBUFS            The  system  ran  out  of  memory  for fragmentation
                          buffers or other internal data structures.


       ENOMEM             The system was unable to allocate memory for an IPv6
                          socket option or other internal data structures.


       ENOPROTOOPT        An IP socket option was attempted on an IPv6 socket,
                          or an IPv6 socket option  was  attempted  on  an  IP
                          socket.


       ENOPROTOOPT        Invalid socket type for the option.


NOTES
       Applications  using  the  sockets API must use the Advanced Sockets API
       for IPv6 (RFC 3542) to see elements of the inbound packet's IPv6 header
       or extension headers.


       The ip6 service is managed by the service management facility,  smf(7),
       under the service identifier:

         svc:/network/initial:default



       Administrative actions on this service, such as enabling, disabling, or
       requesting  restart,  can  be  performed using svcadm(8). The service's
       status can be queried using the svcs(1) command.

Oracle Solaris 11.4               24 Feb 2021                          ip6(4P)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3