aboutsummaryrefslogtreecommitdiffstats
path: root/man/man2const/IP_PKTINFO.2const
diff options
context:
space:
mode:
Diffstat (limited to 'man/man2const/IP_PKTINFO.2const')
-rw-r--r--man/man2const/IP_PKTINFO.2const111
1 files changed, 111 insertions, 0 deletions
diff --git a/man/man2const/IP_PKTINFO.2const b/man/man2const/IP_PKTINFO.2const
new file mode 100644
index 0000000000..9546d68c65
--- /dev/null
+++ b/man/man2const/IP_PKTINFO.2const
@@ -0,0 +1,111 @@
+.\" Copyright, the authors of the Linux man-pages project
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH IP_PKTINFO 2const (date) "Linux man-pages (unreleased)"
+.SH NAME
+IP_PKTINFO
+\-
+information about the incoming packet
+.SH LIBRARY
+Standard C library
+.RI ( libc ,\~ \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <netinet/in.h>" " /* Definition of " IP* " constants */"
+.B #include <sys/socket.h>
+.P
+.BI int\~setsockopt(int\~ sockfd ,\~IPPROTO_IP,\~IP_PKTINFO,
+.BI " const\~int\~*" enable ,\~sizeof(int));
+.fi
+.P
+.EX
+struct in_pktinfo {
+ unsigned int ipi_ifindex; /* Interface index */
+ struct in_addr ipi_spec_dst; /* Local address */
+ struct in_addr ipi_addr; /* Header Destination address */
+};
+.EE
+.SH DESCRIPTION
+Pass an
+.B IP_PKTINFO
+ancillary message that contains a
+.I pktinfo
+structure that supplies some information about the incoming packet.
+This works only for datagram oriented sockets.
+.P
+The argument is a flag that tells the socket whether the
+.B IP_PKTINFO
+message should be passed or not.
+.P
+The message itself can be sent/retrieved
+only as a control message with a packet using
+.BR recvmsg (2)
+or
+.BR sendmsg (2).
+.P
+When returned by
+.BR recvmsg (2) ,
+.I .ipi_ifindex
+is the unique index of the interface the packet was received on.
+.I .ipi_spec_dst
+is the preferred source address for replies to the given packet,
+and
+.I .ipi_addr
+is the destination address in the packet header.
+These addresses are usually the same,
+but can differ for broadcast or multicast packets.
+Depending on the configured routes,
+.I .ipi_spec_dst
+might belong to a different interface from the one that received the packet.
+.P
+If
+.B IP_PKTINFO
+is passed to
+.BR sendmsg (2)
+and
+.\" This field is grossly misnamed
+.I .ipi_spec_dst
+is not zero,
+then it is used as the local source address,
+for the routing table lookup,
+and for setting up IP source route options.
+When
+.I .ipi_ifindex
+is not zero,
+the primary local address of the interface specified by the index
+overwrites
+.I .ipi_spec_dst
+for the routing table lookup.
+.I .ipi_addr
+is ignored.
+.P
+Not supported for
+.B SOCK_STREAM
+sockets.
+.SH ERRORS
+See
+.BR IPPROTO_IP (2const).
+See
+.BR setsockopt (2).
+See
+.BR ip (7).
+.SH VERSIONS
+Some BSD sockets implementations provide
+.B IP_RCVDSTADDR
+and
+.B IP_RECVIF
+socket options to get the destination address and the interface of
+received datagrams.
+Linux has the more general
+.B IP_PKTINFO
+for the same task.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.2.
+.\" Precisely: since Linux 2.1.68
+.SH SEE ALSO
+.BR IPPROTO_IP (2const),
+.BR setsockopt (2),
+.BR ip (7)