bool PAP::Up() { TRACE("PAP: Up() state=%d\n", State()); switch (State()) { case INITIAL: if (Side() == PPP_LOCAL_SIDE) { NewState(REQ_SENT); InitializeRestartCount(); SendRequest(); } else if (Side() == PPP_PEER_SIDE) { NewState(WAITING_FOR_REQ); InitializeRestartCount(); fNextTimeout = system_time() + kPAPTimeout; } else { UpFailedEvent(); return false; } break; default: ; } return true; }
bool IPCP::Down() { TRACE("IPCP: Down() state=%d\n", State()); switch(Interface().Phase()) { case PPP_DOWN_PHASE: // interface finished terminating NewState(PPP_INITIAL_STATE); ReportDownEvent(); // this will also reset and update addresses break; /* case PPP_TERMINATION_PHASE: // interface is terminating break; case PPP_ESTABLISHMENT_PHASE: // interface is reconfiguring break; */ case PPP_ESTABLISHED_PHASE: // terminate this NCP individually (block until we finished terminating) if(State() != PPP_INITIAL_STATE && State() != PPP_CLOSING_STATE) { NewState(PPP_CLOSING_STATE); InitializeRestartCount(); SendTerminateRequest(); } while(State() == PPP_CLOSING_STATE) snooze(50000); break; default: ; } return true; }
bool IPCP::Up() { TRACE("IPCP: Up() state=%d\n", State()); // Servers do not send a configure-request when Up() is called. They wait until // the client requests this protocol. if(Interface().Mode() == PPP_SERVER_MODE) return true; switch(State()) { case PPP_INITIAL_STATE: NewState(PPP_REQ_SENT_STATE); InitializeRestartCount(); SendConfigureRequest(); break; default: ; } return true; }
void IPCP::RCRGoodEvent(struct mbuf *packet) { TRACE("IPCP: RCRGoodEvent() state=%d\n", State()); switch(State()) { case PPP_INITIAL_STATE: NewState(PPP_ACK_SENT_STATE); InitializeRestartCount(); SendConfigureRequest(); SendConfigureAck(packet); break; case PPP_REQ_SENT_STATE: NewState(PPP_ACK_SENT_STATE); case PPP_ACK_SENT_STATE: SendConfigureAck(packet); break; case PPP_ACK_RCVD_STATE: NewState(PPP_OPENED_STATE); SendConfigureAck(packet); ReportUpEvent(); break; case PPP_OPENED_STATE: NewState(PPP_ACK_SENT_STATE); SendConfigureRequest(); SendConfigureAck(packet); break; default: m_freem(packet); } }