diff options
Diffstat (limited to 'man/man2const/IP_PKTINFO.2const')
| -rw-r--r-- | man/man2const/IP_PKTINFO.2const | 111 |
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) |
