undefined4
FUN_004066c8(undefined4 param_1,char *param_2,undefined4 param_3,undefined4 param_4,int *param_5,
undefined4 param_6,undefined4 param_7,int *param_8)
{
int iVar1;
int iVar2;
undefined4 uVar3;
char *pcVar4;
int *piVar5;
undefined2 local_128;
undefined2 local_126 [3];
undefined1 auStack_120 [8];
undefined1 auStack_118 [32];
undefined1 auStack_f8 [8];
undefined1 auStack_f0 [16];
undefined1 auStack_e0 [188];
if (param_5[2] == 0) {
pcVar4 = "no server ID option";
}
else {
iVar1 = duidcmp(param_5 + 2,&DAT_0043a634);
if (iVar1 == 0) {
if (*param_5 != 0) {
dhcp6_init_options(auStack_120);
iVar1 = duidcpy(auStack_118,&DAT_0043a634);
if (iVar1 == 0) {
iVar1 = duidcpy(auStack_120,param_5);
if (iVar1 == 0) {
iVar1 = find_hostconf(param_5);
if (iVar1 != 0) {
dprintf(7,"react_release","found a host configuration named %s",
*(undefined4 *)(iVar1 + 4));
}
iVar2 = FUN_00403aac(param_3,param_4,iVar1,param_5,auStack_120);
if (iVar2 == 0) {
if ((*param_2 == -1) || (*param_8 != 0)) {
for (piVar5 = (int *)param_5[10]; piVar5 != (int *)0x0; piVar5 = (int *)*piVar5) {
iVar2 = FUN_00405924(piVar5,auStack_f8,param_5);
if (iVar2 != 0) goto LAB_0040682c;
}
for (piVar5 = (int *)param_5[0xc]; piVar5 != (int *)0x0; piVar5 = (int *)*piVar5) {
iVar2 = FUN_00405924(piVar5,auStack_f0,param_5);
if (iVar2 != 0) goto LAB_0040682c;
}
local_128 = 0;
iVar2 = dhcp6_add_listval(auStack_e0,2,&local_128,0);
if (iVar2 != 0) goto LAB_00406980;
dprintf(5,"react_release","failed to add a status code");
}
else {
local_126[0] = 5;
uVar3 = addr2str(param_6);
dprintf(6,"react_release","unexpected unicast message from %s",uVar3);
iVar2 = dhcp6_add_listval(auStack_e0,2,local_126,0);
if (iVar2 != 0) {
LAB_00406980:
FUN_0040621c(7,param_1,param_3,param_5,param_6,param_7,auStack_120,param_8,iVar1);
dhcp6_clear_options(auStack_120);
return 0;
}
dprintf(3,"react_release","failed to add a status code");
}
}
else {
if (iVar1 == 0) {
uVar3 = duidstr(param_5);
}
else {
uVar3 = *(undefined4 *)(iVar1 + 4);
}
dprintf(6,"react_release","failed to process authentication information for %s",uVar3)
;
}
}
else {
dprintf(3,"react_release","failed to copy client ID");
}
}
else {
dprintf(3,"react_release","failed to copy server ID");
}
LAB_0040682c:
dhcp6_clear_options(auStack_120);
return 0xffffffff;
}
pcVar4 = "no client ID option";
}
else {
pcVar4 = "server ID mismatch";
}
}
dprintf(6,"react_release",pcVar4);
return 0xffffffff;
}