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