/* 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;
}