int ifaddrconf(int param_1,char *param_2,int param_3,undefined4 param_4)
{
int iVar1;
int iVar2;
undefined4 uVar3;
int *piVar4;
char *pcVar5;
char *pcVar6;
ulong __request;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
char local_40 [16];
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
if (param_1 == 0) {
pcVar6 = "add";
__request = 0x8916;
}
else {
if (param_1 != 1) {
return -1;
}
pcVar6 = "remove";
__request = 0x8936;
}
iVar1 = socket(10,1,0x11);
if (iVar1 < 0) {
piVar4 = __errno_location();
pcVar6 = strerror(*piVar4);
dprintf(3,"ifaddrconf","can\'t open a temporary socket: %s",pcVar6);
iVar1 = -1;
}
else {
local_58 = 0;
local_54 = 0;
local_50 = 0;
local_4c = 0;
local_48 = 0;
local_44 = 0;
local_40[0] = '\0';
local_40[1] = '\0';
local_40[2] = '\0';
local_40[3] = '\0';
local_40[4] = '\0';
local_40[5] = '\0';
local_40[6] = '\0';
local_40[7] = '\0';
local_40[8] = '\0';
local_40[9] = '\0';
local_40[10] = '\0';
local_40[0xb] = '\0';
local_40[0xc] = '\0';
local_40[0xd] = '\0';
local_40[0xe] = '\0';
local_40[0xf] = '\0';
local_30 = 0;
local_2c = 0;
local_28 = 0;
local_24 = 0;
strncpy(local_40,param_2,0xf) //possible issue identified - semgrep
iVar2 = ioctl(iVar1,0x8933,local_40);
if (iVar2 < 0) {
piVar4 = __errno_location();
pcVar6 = strerror(*piVar4);
dprintf(5,"ifaddrconf","failed to get the index of %s: %s",param_2,pcVar6);
close(iVar1);
iVar1 = -1;
}
else {
local_4c = *(undefined4 *)(param_3 + 0x14);
local_54 = *(undefined4 *)(param_3 + 0xc);
local_50 = *(undefined4 *)(param_3 + 0x10);
local_58 = *(undefined4 *)(param_3 + 8);
local_44 = local_30;
local_48 = param_4;
iVar2 = ioctl(iVar1,__request,&local_58);
if (iVar2 == 0) {
uVar3 = addr2str(param_3);
dprintf(7,"ifaddrconf","%s an address %s/%d on %s",pcVar6,uVar3,param_4,param_2);
close(iVar1);
iVar1 = 0;
}
else {
piVar4 = __errno_location();
pcVar5 = strerror(*piVar4);
dprintf(5,"ifaddrconf","failed to %s an address on %s: %s",pcVar6,param_2,pcVar5);
close(iVar1);
iVar1 = -*piVar4;
}
}
}
return iVar1;
}