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: Brian Haley <brian.haley@hp.com> Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
fe7ca2e1e8
Коммит
fb13d9f9e4
|
@ -717,15 +717,20 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
|
|||
static int sctp_ctl_sock_init(void)
|
||||
{
|
||||
int err;
|
||||
sa_family_t family;
|
||||
sa_family_t family = PF_INET;
|
||||
|
||||
if (sctp_get_pf_specific(PF_INET6))
|
||||
family = PF_INET6;
|
||||
else
|
||||
family = PF_INET;
|
||||
|
||||
err = inet_ctl_sock_create(&sctp_ctl_sock, family,
|
||||
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) {
|
||||
printk(KERN_ERR
|
||||
"SCTP: Failed to create the SCTP control socket.\n");
|
||||
|
|
Загрузка…
Ссылка в новой задаче