undefined4 msock_init(void)
{
int iVar1;
char *pcVar2;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
int local_94;
sockaddr local_90;
undefined1 auStack_80 [16];
undefined1 auStack_70 [16];
int local_60;
sockaddr local_5c;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
char acStack_40 [36];
local_a0 = 1;
local_a4 = 1;
msockfd4 = socket(2,1,0);
if (msockfd4 < 0) {
pcVar2 = "%s: v4 socket() fail!\n";
}
else {
iVar1 = setsockopt(msockfd4,0xffff,4,&local_a4,4);
if (iVar1 < 0) {
pcVar2 = "%s: v4 setsockopt() SO_REUSEADDR fail!\n";
}
else {
memset(acStack_40,0,0x20) //possible issue identified - semgrep
strncpy(acStack_40,o_interface,0x10) //possible issue identified - semgrep
iVar1 = setsockopt(msockfd4,0xffff,0x19,acStack_40,0x20);
if (iVar1 < 0) {
pcVar2 = "%s: v4 setsockopt() SO_BINDTODEVICE fail!\n";
}
else {
local_90.sa_family = 2;
local_90.sa_data[0] = '\x14';
local_90.sa_data[1] = -0x15;
local_90.sa_data[6] = '\0';
local_90.sa_data[7] = '\0';
local_90.sa_data[8] = '\0';
local_90.sa_data[9] = '\0';
local_90.sa_data[10] = '\0';
local_90.sa_data[0xb] = '\0';
local_90.sa_data[0xc] = '\0';
local_90.sa_data[0xd] = '\0';
local_90.sa_data[2] = '\0';
local_90.sa_data[3] = '\0';
local_90.sa_data[4] = '\0';
local_90.sa_data[5] = '\0';
iVar1 = bind(msockfd4,&local_90,0x10);
if (iVar1 < 0) {
pcVar2 = "%s: v4 bind() fail!\n";
}
else {
inet_pton(2,"224.0.0.252",&local_a8) //possible issue identified - semgrep
local_9c = local_a8;
local_98 = 0;
iVar1 = sioc_getifindex(o_interface);
if (iVar1 < 0) {
pcVar2 = "%s: v4 get ifindex fail!\n";
}
else {
local_94 = iVar1;
iVar1 = setsockopt(msockfd4,0,0x23,&local_9c,0xc);
if (iVar1 < 0) {
pcVar2 = "%s: v4 setsockopt() IP_ADD_MEMBERSHIP fail!\n";
}
else {
msockfd6 = socket(10,1,0);
if (msockfd6 < 0) {
pcVar2 = "%s: v6 socket() fail!\n";
}
else {
iVar1 = setsockopt(msockfd6,0x29,0x1a,&local_a0,4);
if (iVar1 < 0) {
pcVar2 = "%s: v6 setsockopt() IPV6_V6ONLY fail!\n";
}
else {
iVar1 = setsockopt(msockfd6,0xffff,4,&local_a4,4);
if (iVar1 < 0) {
pcVar2 = "%s: v6 setsockopt() SO_REUSEADDR fail!\n";
}
else {
memset(acStack_40,0,0x20) //possible issue identified - semgrep
strncpy(acStack_40,o_interface,0x10) //possible issue identified - semgrep
iVar1 = setsockopt(msockfd6,0xffff,0x19,acStack_40,0x20);
if (iVar1 < 0) {
pcVar2 = "%s: v6 setsockopt() SO_BINDTODEVICE fail!\n";
}
else {
local_5c.sa_family = 10;
local_5c.sa_data[0] = '\0';
local_5c.sa_data[1] = '\0';
local_5c.sa_data[2] = '\0';
local_5c.sa_data[3] = '\0';
local_5c.sa_data[4] = '\0';
local_5c.sa_data[5] = '\0';
local_5c.sa_data[6] = '\0';
local_5c.sa_data[7] = '\0';
local_5c.sa_data[8] = '\0';
local_5c.sa_data[9] = '\0';
local_5c.sa_data[10] = '\0';
local_5c.sa_data[0xb] = '\0';
local_5c.sa_data[0xc] = '\0';
local_5c.sa_data[0xd] = '\0';
local_4c = 0;
local_48 = 0;
local_44 = 0;
memcpy(local_5c.sa_data + 6,&in6addr_any,0x10) //possible issue identified - semgrep
local_5c.sa_data._0_2_ = 0xeb14;
iVar1 = bind(msockfd6,&local_5c,0x1c);
if (iVar1 < 0) {
pcVar2 = "%s: v6 bind() fail!\n";
}
else {
inet_pton(10,"FF02::1:3",auStack_80) //possible issue identified - semgrep
memcpy(auStack_70,auStack_80,0x10) //possible issue identified - semgrep
iVar1 = ipv6op_getifindex(o_interface);
if (iVar1 < 0) {
pcVar2 = "%s: v6 get ifindex fail!\n";
}
else {
local_60 = iVar1;
iVar1 = setsockopt(msockfd6,0x29,0x14,auStack_70,0x14);
if (-1 < iVar1) {
return 0;
}
pcVar2 = "%s: v6 setsockopt() IP_ADD_MEMBERSHIP fail!\n";
}
}
}
}
}
}
}
}
}
}
}
}
verbose(pcVar2,"msock_init");
if (msockfd4 != 0) {
close(msockfd4);
}
if (msockfd6 != 0) {
close(msockfd6);
}
return 0xffffffff;
}