/* WARNING: Removing unreachable block (ram,0x004133ec) */
/* WARNING: Removing unreachable block (ram,0x00413400) */
/* WARNING: Removing unreachable block (ram,0x00413518) */
undefined4 configure_interface(int *param_1)
{
uint uVar1;
undefined4 *puVar2;
size_t sVar3;
undefined4 uVar4;
char *pcVar5;
undefined4 uVar6;
int *piVar7;
int iVar8;
int *piVar9;
undefined4 *puVar10;
dprintf(7,"configure_interface","called");
if (param_1 != (int *)0x0) {
do {
uVar1 = if_nametoindex((char *)param_1[1]);
if (uVar1 == 0) {
iVar8 = param_1[1];
piVar9 = __errno_location();
pcVar5 = strerror(*piVar9);
dprintf(3,"configure_interface","invalid interface(%s): %s",iVar8,pcVar5);
LAB_004131f8:
FUN_00410654(DAT_00441040);
DAT_00441040 = (undefined4 *)0x0;
return 0xffffffff;
}
puVar2 = (undefined4 *)malloc(0x38) //possible issue identified - semgrep
if (puVar2 == (undefined4 *)0x0) {
dprintf(3,"configure_interface","memory allocation for %s failed",param_1[1]);
goto LAB_004131f8;
}
puVar2[1] = 0;
puVar2[2] = 0;
puVar2[3] = 0;
puVar2[4] = 0;
puVar2[5] = 0;
puVar2[6] = 0;
puVar2[7] = 0;
puVar2[8] = 0;
puVar2[9] = 0;
puVar2[10] = 0;
puVar2[0xb] = 0;
puVar2[0xc] = 0;
puVar2[0xd] = 0;
pcVar5 = (char *)param_1[1];
*puVar2 = DAT_00441040;
DAT_00441040 = puVar2;
pcVar5 = strdup(pcVar5);
puVar2[1] = pcVar5;
if (pcVar5 == (char *)0x0) {
dprintf(3,"configure_interface","failed to copy ifname");
goto LAB_004131f8;
}
piVar9 = (int *)param_1[3];
puVar2[7] = puVar2 + 6;
puVar2[9] = puVar2 + 8;
puVar2[4] = 0xffffffff;
puVar2[6] = 0;
puVar2[8] = 0;
piVar7 = DAT_004410cc;
for (; DAT_004410cc = piVar7, piVar9 != (int *)0x0; piVar9 = (int *)*piVar9) {
switch(piVar9[2]) {
case 0:
iVar8 = FUN_00412b04(0,puVar2,piVar9[6]);
if (iVar8 != 0) {
dprintf(3,"configure_interface","****%d****",0xef);
goto LAB_004131f8;
}
break;
case 1:
iVar8 = FUN_00412b04(2,puVar2,piVar9[6]);
if (iVar8 != 0) {
dprintf(3,"configure_interface","****%d****",0xf6);
goto LAB_004131f8;
}
break;
case 2:
puVar2[2] = puVar2[2] | 1;
break;
case 3:
iVar8 = FUN_00412b04(1,puVar2,piVar9[6]);
if (iVar8 != 0) {
dprintf(3,"configure_interface","****%d****",0xe8);
goto LAB_004131f8;
}
break;
default:
dprintf(3,"configure_interface","%s:%d invalid interface configuration",configfilename,
piVar9[3]);
goto LAB_004131f8;
case 6:
dprintf(6,"configure_interface","%s:%d server-only configuration",configfilename,piVar9[3]
);
goto LAB_004131f8;
case 7:
if (puVar2[5] != 0) {
dprintf(6,"configure_interface","%s:%d duplicated configuration",configfilename,
piVar9[3]);
goto LAB_004131f8;
}
pcVar5 = strdup((char *)(piVar9[7] + 1));
puVar2[5] = pcVar5;
if (pcVar5 == (char *)0x0) {
dprintf(5,"configure_interface","failed to copy script path");
goto LAB_004131f8;
}
if (*pcVar5 != '/') {
dprintf(6,"configure_interface","script must be an absolute path");
goto LAB_004131f8;
}
sVar3 = strlen(pcVar5);
pcVar5[sVar3 - 1] = '\0' //possible issue identified - semgrep
break;
case 0xb:
puVar10 = (undefined4 *)piVar9[7];
if (piVar7 == (int *)0x0) {
LAB_0041361c:
dprintf(3,"configure_interface","%s:%d pool \'%s\' not found",configfilename,piVar9[3],
*puVar10);
goto LAB_004131f8;
}
pcVar5 = (char *)*puVar10;
while (iVar8 = strcmp(pcVar5,(char *)piVar7[1]), iVar8 != 0) {
piVar7 = (int *)*piVar7;
if (piVar7 == (int *)0x0) goto LAB_0041361c;
}
if ((puVar10[2] != 0xffffffff) &&
((puVar10[1] == 0xffffffff || ((uint)puVar10[2] < (uint)puVar10[1])))) {
dprintf(3,"configure_interface","%s:%d ",configfilename,piVar9[3],
"specified a larger preferred lifetime than valid lifetime");
goto LAB_004131f8;
}
uVar6 = puVar10[2];
uVar4 = puVar10[1];
puVar2[0xb] = *puVar10;
puVar2[0xc] = uVar4;
puVar2[0xd] = uVar6;
pcVar5 = strdup((char *)*puVar10);
puVar2[0xb] = pcVar5;
if (pcVar5 == (char *)0x0) {
dprintf(3,"configure_interface","memory allocation failed",0);
goto LAB_004131f8;
}
dprintf(7,"configure_interface","pool \'%s\' is specified to the interface \'%s\'",pcVar5,
puVar2[1]);
}
piVar7 = DAT_004410cc;
}
param_1 = (int *)*param_1;
} while (param_1 != (int *)0x0);
}
return 0;
}