ua_htonl(&ipcp->my_compproto, o->data);
struct compreq req;  req.proto = htons(ipcp->my_compproto >> 16); req.slots = (ipcp->my_compproto >> 8) & 255; req.compcid = ipcp->my_compproto & 1; memcpy(o->data, &req, 4);
IpcpSendConfigReq(struct fsm *fp){  /* Send config REQ please */  struct physical *p = link2physical(fp->link);  struct ipcp *ipcp = fsm2ipcp(fp);  u_char buff[24];  struct lcp_opt *o;  o = (struct lcp_opt *)buff;  if ((p && !physical_IsSync(p)) || !REJECTED(ipcp, TY_IPADDR)) {    memcpy(o->data, &ipcp->my_ip.s_addr, 4);    INC_LCP_OPT(TY_IPADDR, 6, o);  }  if (ipcp->my_compproto && !REJECTED(ipcp, TY_COMPPROTO)) {    if (ipcp->heis1172) {      u_int16_t proto = PROTO_VJCOMP;      ua_htons(&proto, o->data);      INC_LCP_OPT(TY_COMPPROTO, 4, o);    } else {      ua_htonl(&ipcp->my_compproto, o->data);      INC_LCP_OPT(TY_COMPPROTO, 6, o);    }  }  if (IsEnabled(ipcp->cfg.ns.dns_neg) &&      !REJECTED(ipcp, TY_PRIMARY_DNS - TY_ADJUST_NS) &&      !REJECTED(ipcp, TY_SECONDARY_DNS - TY_ADJUST_NS)) {    struct in_addr dns[2];    getdns(ipcp, dns);    memcpy(o->data, &dns[0].s_addr, 4);    INC_LCP_OPT(TY_PRIMARY_DNS, 6, o);    memcpy(o->data, &dns[1].s_addr, 4);    INC_LCP_OPT(TY_SECONDARY_DNS, 6, o);  }  fsm_Output(fp, CODE_CONFIGREQ, fp->reqid, buff, (u_char *)o - buff);}