Re: [BUG?] ipv6.7: SOCK_DGRAM can accept different protocols?
From: Eugene Syromyatnikov <hidden>
Date: 2021-09-17 07:05:51
Also in:
linux-man
On Fri, Sep 17, 2021 at 8:13 AM Alejandro Colomar [off-list ref] wrote:
Hi, Reading a stackoverflow question <https://stackoverflow.com/questions/51996808/do-we-need-to-specify-protocol-when-type-is-sock-dgram-or-sock-stream-in-soc> it noted that, while ip(7) notes that protocol can be left as 0 for both SOCK_STREAM and SOCK_DGRAM, ipv6(7) is misleading and seems to suggest that protocol may be significant for SOCK_DGRAM (at least in the SYNOPSIS).
It can be left as 0, but, I think, IPPROTO_UDPLITE (at least) can be specified in both cases, if the caller wishes so (as well as IPPROTO_MPTCP/IPPROTO_SCTP for SOCK_STREAM, and some other, more obscure protocols, like DCCP or L2TP).
I guess that's not true, and it can be left as 0, but since I don't
know, I'll ask.
Thanks,
Alex
--
IP(7) Linux Programmer's Manual IP(7)
NAME
ip - Linux IPv4 protocol implementation
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
raw_socket = socket(AF_INET, SOCK_RAW, protocol);
--
IPV6(7) Linux Programmer's Manual IPV6(7)
NAME
ipv6 - Linux IPv6 protocol implementation
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
tcp6_socket = socket(AF_INET6, SOCK_STREAM, 0);
raw6_socket = socket(AF_INET6, SOCK_RAW, protocol);
udp6_socket = socket(AF_INET6, SOCK_DGRAM, protocol);
--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/
--
Eugene Syromyatnikov
mailto:evgsyr@gmail.com
xmpp:esyr@jabber.{ru|org}