Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb13d9f9 authored by Brian Haley's avatar Brian Haley Committed by David S. Miller
Browse files

SCTP: change sctp_ctl_sock_init() to try IPv4 if IPv6 fails



Change sctp_ctl_sock_init() to try IPv4 if IPv6 socket registration
fails.  Required if the IPv6 module is loaded with "disable=1", else
SCTP will fail to load.

Signed-off-by: default avatarBrian Haley <brian.haley@hp.com>
Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fe7ca2e1
Loading
Loading
Loading
Loading
+8 −3
Original line number Original line Diff line number Diff line
@@ -717,15 +717,20 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
static int sctp_ctl_sock_init(void)
static int sctp_ctl_sock_init(void)
{
{
	int err;
	int err;
	sa_family_t family;
	sa_family_t family = PF_INET;


	if (sctp_get_pf_specific(PF_INET6))
	if (sctp_get_pf_specific(PF_INET6))
		family = PF_INET6;
		family = PF_INET6;
	else
		family = PF_INET;


	err = inet_ctl_sock_create(&sctp_ctl_sock, family,
	err = inet_ctl_sock_create(&sctp_ctl_sock, family,
				   SOCK_SEQPACKET, IPPROTO_SCTP, &init_net);
				   SOCK_SEQPACKET, IPPROTO_SCTP, &init_net);

	/* If IPv6 socket could not be created, try the IPv4 socket */
	if (err < 0 && family == PF_INET6)
		err = inet_ctl_sock_create(&sctp_ctl_sock, AF_INET,
					   SOCK_SEQPACKET, IPPROTO_SCTP,
					   &init_net);

	if (err < 0) {
	if (err < 0) {
		printk(KERN_ERR
		printk(KERN_ERR
		       "SCTP: Failed to create the SCTP control socket.\n");
		       "SCTP: Failed to create the SCTP control socket.\n");