if ((*o)->val.id == algorithm[f]->id && (*o)->algorithm == f)
if ((*o)->val.hdr.id == algorithm[f]->id && (*o)->algorithm == f)
CcpSendConfigReq(struct fsm *fp){  /* Send config REQ please */  struct ccp *ccp = fsm2ccp(fp);  struct ccp_opt **o;  u_char *cp, buff[100];  int f, alloc;  cp = buff;  o = &ccp->out.opt;  alloc = ccp->his_reject == 0 && ccp->out.opt == NULL;  ccp->my_proto = -1;  ccp->out.algorithm = -1;  for (f = 0; f < NALGORITHMS; f++)    if (IsEnabled(ccp->cfg.neg[algorithm[f]->Neg]) &&        !REJECTED(ccp, algorithm[f]->id) &&        (*algorithm[f]->Usable)(fp)) {      if (!alloc)        for (o = &ccp->out.opt; *o != NULL; o = &(*o)->next)          if ((*o)->val.id == algorithm[f]->id && (*o)->algorithm == f)            break;      if (alloc || *o == NULL) {        *o = (struct ccp_opt *)malloc(sizeof(struct ccp_opt));        (*o)->val.id = algorithm[f]->id;        (*o)->val.len = 2;        (*o)->next = NULL;        (*o)->algorithm = f;        (*algorithm[f]->o.OptInit)(&(*o)->val, &ccp->cfg);      }      if (cp + (*o)->val.len > buff + sizeof buff) {        log_Printf(LogERROR, "%s: CCP REQ buffer overrun !\n", fp->link->name);        break;      }      memcpy(cp, &(*o)->val, (*o)->val.len);      cp += (*o)->val.len;      ccp->my_proto = (*o)->val.id;      ccp->out.algorithm = f;      if (alloc)        o = &(*o)->next;    }  fsm_Output(fp, CODE_CONFIGREQ, fp->reqid, buff, cp - buff, MB_CCPOUT);}