undefined4 mrt_activate_route(in_addr param_1,in_addr param_2,short param_3)
{
ushort uVar1;
undefined1 uVar2;
char *pcVar3;
undefined4 *puVar4;
undefined4 *puVar5;
undefined4 **ppuVar6;
undefined4 **ppuVar7;
undefined4 *puVar8;
char acStack_88 [32];
char acStack_68 [32];
undefined1 auStack_48 [36];
pcVar3 = inet_ntoa(param_1);
strcpy(acStack_88,pcVar3) //possible issue identified - semgrep
pcVar3 = inet_ntoa(param_2);
strcpy(acStack_68,pcVar3) //possible issue identified - semgrep
ppuVar6 = (undefined4 **)0x0;
do {
ppuVar7 = (undefined4 **)DAT_0041b9c0;
if (ppuVar6 != (undefined4 **)0x0) {
ppuVar7 = (undefined4 **)*ppuVar6;
}
if (ppuVar7 == &DAT_0041b9c0) {
return 0xffffffff;
}
if (ppuVar7 == (undefined4 **)0x0) {
return 0xffffffff;
}
puVar8 = ppuVar7[2];
ppuVar6 = ppuVar7;
} while (puVar8 != (undefined4 *)param_2.s_addr);
ppuVar6 = (undefined4 **)0x0;
while( true ) {
if (ppuVar6 == (undefined4 **)0x0) {
ppuVar6 = (undefined4 **)ppuVar7[3];
}
else {
ppuVar6 = (undefined4 **)*ppuVar6;
}
if ((ppuVar6 == ppuVar7 + 3) || (ppuVar6 == (undefined4 **)0x0)) break;
if ((ppuVar6[2] == (undefined4 *)param_1.s_addr) && (*(short *)(ppuVar6 + 3) == param_3)) {
return 0;
}
}
puVar4 = (undefined4 *)malloc(0x10) //possible issue identified - semgrep
if (puVar4 != (undefined4 *)0x0) {
puVar5 = ppuVar7[4];
*puVar4 = ppuVar7 + 3;
ppuVar7[4] = puVar4;
*puVar5 = puVar4;
puVar4[2] = param_1.s_addr;
*(short *)(puVar4 + 3) = param_3;
puVar4[1] = puVar5;
memset(auStack_48,0,0x20) //possible issue identified - semgrep
ppuVar6 = (undefined4 **)0x0;
while( true ) {
if (ppuVar6 == (undefined4 **)0x0) {
ppuVar6 = (undefined4 **)ppuVar7[5];
}
else {
ppuVar6 = (undefined4 **)*ppuVar6;
}
if ((ppuVar6 == ppuVar7 + 5) || (ppuVar6 == (undefined4 **)0x0)) break;
uVar1 = *(ushort *)(ppuVar6 + 5);
uVar2 = vifs_get_threshold((uint)uVar1);
auStack_48[uVar1] = uVar2;
}
mrtapi_add_mfc(param_1.s_addr,puVar8,param_3,auStack_48);
return 0;
}
return 0;
}