int ipv6cp_Show(struct cmdargs const *arg) { struct ipv6cp *ipv6cp = &arg->bundle->ncp.ipv6cp; prompt_Printf(arg->prompt, "%s [%s]\n", ipv6cp->fsm.name, State2Nam(ipv6cp->fsm.state)); if (ipv6cp->fsm.state == ST_OPENED) { prompt_Printf(arg->prompt, " His side: %s\n", ncpaddr_ntoa(&ipv6cp->hisaddr)); prompt_Printf(arg->prompt, " My side: %s\n", ncpaddr_ntoa(&ipv6cp->myaddr)); prompt_Printf(arg->prompt, " Queued packets: %lu\n", (unsigned long)ipv6cp_QueueLen(ipv6cp)); } prompt_Printf(arg->prompt, "\nDefaults:\n"); prompt_Printf(arg->prompt, " FSM retry = %us, max %u Config" " REQ%s, %u Term REQ%s\n\n", ipv6cp->cfg.fsm.timeout, ipv6cp->cfg.fsm.maxreq, ipv6cp->cfg.fsm.maxreq == 1 ? "" : "s", ipv6cp->cfg.fsm.maxtrm, ipv6cp->cfg.fsm.maxtrm == 1 ? "" : "s"); throughput_disp(&ipv6cp->throughput, arg->prompt); return 0; }
int ccp_ReportStatus(struct cmdargs const *arg) { struct ccp_opt **o; struct link *l; struct ccp *ccp; int f; l = command_ChooseLink(arg); ccp = &l->ccp; prompt_Printf(arg->prompt, "%s: %s [%s]\n", l->name, ccp->fsm.name, State2Nam(ccp->fsm.state)); if (ccp->fsm.state == ST_OPENED) { prompt_Printf(arg->prompt, " My protocol = %s, His protocol = %s\n", protoname(ccp->my_proto), protoname(ccp->his_proto)); prompt_Printf(arg->prompt, " Output: %ld --> %ld, Input: %ld --> %ld\n", ccp->uncompout, ccp->compout, ccp->compin, ccp->uncompin); } if (ccp->in.algorithm != -1) prompt_Printf(arg->prompt, "\n Input Options: %s\n", (*algorithm[ccp->in.algorithm]->Disp)(&ccp->in.opt)); if (ccp->out.algorithm != -1) { o = &ccp->out.opt; for (f = 0; f < ccp->out.algorithm; f++) if (IsEnabled(ccp->cfg.neg[algorithm[f]->Neg])) o = &(*o)->next; prompt_Printf(arg->prompt, " Output Options: %s\n", (*algorithm[ccp->out.algorithm]->Disp)(&(*o)->val)); } prompt_Printf(arg->prompt, "\n Defaults: "); prompt_Printf(arg->prompt, "FSM retry = %us, max %u Config" " REQ%s, %u Term REQ%s\n", ccp->cfg.fsm.timeout, ccp->cfg.fsm.maxreq, ccp->cfg.fsm.maxreq == 1 ? "" : "s", ccp->cfg.fsm.maxtrm, ccp->cfg.fsm.maxtrm == 1 ? "" : "s"); prompt_Printf(arg->prompt, " deflate windows: "); prompt_Printf(arg->prompt, "incoming = %d, ", ccp->cfg.deflate.in.winsize); prompt_Printf(arg->prompt, "outgoing = %d\n", ccp->cfg.deflate.out.winsize); #ifndef NODES prompt_Printf(arg->prompt, " MPPE: "); if (ccp->cfg.mppe.keybits) prompt_Printf(arg->prompt, "%d bits, ", ccp->cfg.mppe.keybits); else prompt_Printf(arg->prompt, "any bits, "); switch (ccp->cfg.mppe.state) { case MPPE_STATEFUL: prompt_Printf(arg->prompt, "stateful"); break; case MPPE_STATELESS: prompt_Printf(arg->prompt, "stateless"); break; case MPPE_ANYSTATE: prompt_Printf(arg->prompt, "any state"); break; } prompt_Printf(arg->prompt, "%s\n", ccp->cfg.mppe.required ? ", required" : ""); #endif prompt_Printf(arg->prompt, "\n DEFLATE: %s\n", command_ShowNegval(ccp->cfg.neg[CCP_NEG_DEFLATE])); prompt_Printf(arg->prompt, " PREDICTOR1: %s\n", command_ShowNegval(ccp->cfg.neg[CCP_NEG_PRED1])); prompt_Printf(arg->prompt, " DEFLATE24: %s\n", command_ShowNegval(ccp->cfg.neg[CCP_NEG_DEFLATE24])); #ifndef NODES prompt_Printf(arg->prompt, " MPPE: %s\n", command_ShowNegval(ccp->cfg.neg[CCP_NEG_MPPE])); #endif return 0; }
memset(&fp->StoppedTimer, '\0', sizeof fp->StoppedTimer); fp->LogLevel = LogLevel; fp->link = l; fp->bundle = bundle; fp->parent = parent; fp->fn = fn; fp->FsmTimer.name = timer_names[0]; fp->OpenTimer.name = timer_names[1]; fp->StoppedTimer.name = timer_names[2]; } static void NewState(struct fsm *fp, int new) { log_Printf(fp->LogLevel, "%s: State change %s --> %s\n", fp->link->name, State2Nam(fp->state), State2Nam(new)); if (fp->state == ST_STOPPED && fp->StoppedTimer.state == TIMER_RUNNING) timer_Stop(&fp->StoppedTimer); fp->state = new; if ((new >= ST_INITIAL && new <= ST_STOPPED) || (new == ST_OPENED)) { timer_Stop(&fp->FsmTimer); if (new == ST_STOPPED && fp->StoppedTimer.load) { timer_Stop(&fp->StoppedTimer); fp->StoppedTimer.func = StoppedTimeout; fp->StoppedTimer.arg = (void *) fp; timer_Start(&fp->StoppedTimer); } } } void