/*
 * fsm_protreject - Peer doesn't speak this protocol.
 *
 * Treat this as a catastrophic error (RXJ-).
 */
void fsm_protreject(fsm *f) {
    switch( f->state ){
    case PPP_FSM_CLOSING:
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	/* fall through */
	/* no break */
    case PPP_FSM_CLOSED:
	f->state = PPP_FSM_CLOSED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	break;

    case PPP_FSM_STOPPING:
    case PPP_FSM_REQSENT:
    case PPP_FSM_ACKRCVD:
    case PPP_FSM_ACKSENT:
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	/* fall through */
	/* no break */
    case PPP_FSM_STOPPED:
	f->state = PPP_FSM_STOPPED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	break;

    case PPP_FSM_OPENED:
	terminate_layer(f, PPP_FSM_STOPPING);
	break;

    default:
	FSMDEBUG(("%s: Protocol-reject event in state %d!",
		  PROTO_NAME(f), f->state));
	/* no break */
    }
}
/*
 * fsm_rtermack - Receive Terminate-Ack.
 */
static void fsm_rtermack(fsm *f) {
    switch (f->state) {
    case PPP_FSM_CLOSING:
	UNTIMEOUT(fsm_timeout, f);
	f->state = PPP_FSM_CLOSED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	break;
    case PPP_FSM_STOPPING:
	UNTIMEOUT(fsm_timeout, f);
	f->state = PPP_FSM_STOPPED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	break;

    case PPP_FSM_ACKRCVD:
	f->state = PPP_FSM_REQSENT;
	break;

    case PPP_FSM_OPENED:
	if (f->callbacks->down)
	    (*f->callbacks->down)(f);	/* Inform upper layers */
	fsm_sconfreq(f, 0);
	f->state = PPP_FSM_REQSENT;
	break;
    default:
	break;
    }
}
Example #3
0
/*
 * fsm_rtermack - Receive Terminate-Ack.
 */
static void
fsm_rtermack(fsm *f)
{
    FSMDEBUG((LOG_INFO, "fsm_rtermack(%s).", PROTO_NAME(f)));

    switch (f->state) {
    case CLOSING:
	UNTIMEOUT(fsm_timeout, f);
	f->state = CLOSED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	break;
    case STOPPING:
	UNTIMEOUT(fsm_timeout, f);
	f->state = STOPPED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	break;

    case ACKRCVD:
	f->state = REQSENT;
	break;

    case OPENED:
	if (f->callbacks->down)
	    (*f->callbacks->down)(f);	/* Inform upper layers */
	fsm_sconfreq(f, 0);
	break;
    }
}
Example #4
0
/*
 * fsm_rtermack - Receive Terminate-Ack.
 */
static void
fsm_rtermack(fsm *f)
{
  FSMDEBUG((LOG_INFO, "fsm_rtermack(%s): state=%d (%s)\n", 
        PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
  
  switch (f->state) {
    case LS_CLOSING:
      UNTIMEOUT(fsm_timeout, f);
      f->state = LS_CLOSED;
      if( f->callbacks->finished ) {
        (*f->callbacks->finished)(f);
      }
      break;

    case LS_STOPPING:
      UNTIMEOUT(fsm_timeout, f);
      f->state = LS_STOPPED;
      if( f->callbacks->finished ) {
        (*f->callbacks->finished)(f);
      }
      break;
    
    case LS_ACKRCVD:
      f->state = LS_REQSENT;
      break;
    
    case LS_OPENED:
      if (f->callbacks->down) {
        (*f->callbacks->down)(f);  /* Inform upper layers */
      }
      fsm_sconfreq(f, 0);
      break;
  }
}
/*
 * fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
 */
static void fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len) {
    int ret;
    int treat_as_reject;

    if (id != f->reqid || f->seen_ack)	/* Expected id? */
	return;				/* Nope, toss... */

    if (code == CONFNAK) {
	++f->rnakloops;
	treat_as_reject = (f->rnakloops >= f->maxnakloops);
	if (f->callbacks->nakci == NULL
	    || !(ret = f->callbacks->nakci(f, inp, len, treat_as_reject))) {
	    ppp_error("Received bad configure-nak: %P", inp, len);
	    return;
	}
    } else {
	f->rnakloops = 0;
	if (f->callbacks->rejci == NULL
	    || !(ret = f->callbacks->rejci(f, inp, len))) {
	    ppp_error("Received bad configure-rej: %P", inp, len);
	    return;
	}
    }

    f->seen_ack = 1;

    switch (f->state) {
    case PPP_FSM_CLOSED:
    case PPP_FSM_STOPPED:
	fsm_sdata(f, TERMACK, id, NULL, 0);
	break;

    case PPP_FSM_REQSENT:
    case PPP_FSM_ACKSENT:
	/* They didn't agree to what we wanted - try another request */
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	if (ret < 0)
	    f->state = PPP_FSM_STOPPED;		/* kludge for stopping CCP */
	else
	    fsm_sconfreq(f, 0);		/* Send Configure-Request */
	break;

    case PPP_FSM_ACKRCVD:
	/* Got a Nak/reject when we had already had an Ack?? oh well... */
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	fsm_sconfreq(f, 0);
	f->state = PPP_FSM_REQSENT;
	break;

    case PPP_FSM_OPENED:
	/* Go down and restart negotiation */
	if (f->callbacks->down)
	    (*f->callbacks->down)(f);	/* Inform upper layers */
	fsm_sconfreq(f, 0);		/* Send initial Configure-Request */
	f->state = PPP_FSM_REQSENT;
	break;
    default:
	break;
    }
}
Example #6
0
/*
 * fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
 */
static void
fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
{
  int (*proc) (fsm *, u_char *, int);
  int ret;

  FSMDEBUG(LOG_INFO, ("fsm_rconfnakrej(%s): Rcvd id %d state=%d (%s)\n",
        PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));

  if (id != f->reqid || f->seen_ack) { /* Expected id? */
    return;        /* Nope, toss... */
  }
  proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci;
  if (!proc || !((ret = proc(f, inp, len)))) {
    /* Nak/reject is bad - ignore it */
    FSMDEBUG(LOG_INFO, ("%s: received bad %s (length %d)\n",
          PROTO_NAME(f), (code==CONFNAK? "Nak": "reject"), len));
    return;
  }
  f->seen_ack = 1;

  switch (f->state) {
    case LS_CLOSED:
    case LS_STOPPED:
      fsm_sdata(f, TERMACK, (u_char)id, NULL, 0);
      break;
    
    case LS_REQSENT:
    case LS_ACKSENT:
      /* They didn't agree to what we wanted - try another request */
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      if (ret < 0) {
        f->state = LS_STOPPED;    /* kludge for stopping CCP */
      } else {
        fsm_sconfreq(f, 0);    /* Send Configure-Request */
      }
      break;
    
    case LS_ACKRCVD:
      /* Got a Nak/reject when we had already had an Ack?? oh well... */
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      fsm_sconfreq(f, 0);
      f->state = LS_REQSENT;
      break;
    
    case LS_OPENED:
      /* Go down and restart negotiation */
      if (f->callbacks->down) {
        (*f->callbacks->down)(f);  /* Inform upper layers */
      }
      fsm_sconfreq(f, 0);    /* Send initial Configure-Request */
      f->state = LS_REQSENT;
      break;
  }
}
Example #7
0
/*
 * fsm_rconfack - Receive Configure-Ack.
 */
static void
fsm_rconfack(fsm *f, int id, u_char *inp, int len)
{
  FSMDEBUG(LOG_INFO, ("fsm_rconfack(%s): Rcvd id %d state=%d (%s)\n",
        PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
  
  if (id != f->reqid || f->seen_ack) {   /* Expected id? */
    return; /* Nope, toss... */
  }
  if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len): (len == 0)) ) {
    /* Ack is bad - ignore it */
    FSMDEBUG(LOG_INFO, ("%s: received bad Ack (length %d)\n",
          PROTO_NAME(f), len));
    return;
  }
  f->seen_ack = 1;
  
  switch (f->state) {
    case LS_CLOSED:
    case LS_STOPPED:
      fsm_sdata(f, TERMACK, (u_char)id, NULL, 0);
      break;
    
    case LS_REQSENT:
      f->state = LS_ACKRCVD;
      f->retransmits = f->maxconfreqtransmits;
      break;
    
    case LS_ACKRCVD:
      /* Huh? an extra valid Ack? oh well... */
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      fsm_sconfreq(f, 0);
      f->state = LS_REQSENT;
      break;
    
    case LS_ACKSENT:
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      f->state = LS_OPENED;
      f->retransmits = f->maxconfreqtransmits;
      if (f->callbacks->up) {
        (*f->callbacks->up)(f);  /* Inform upper layers */
      }
      break;
    
    case LS_OPENED:
      /* Go down and restart negotiation */
      if (f->callbacks->down) {
        (*f->callbacks->down)(f);  /* Inform upper layers */
      }
      fsm_sconfreq(f, 0);    /* Send initial Configure-Request */
      f->state = LS_REQSENT;
      break;
  }
}
Example #8
0
/*
 * fsm_rconfack - Receive Configure-Ack.
 */
static void
fsm_rconfack(fsm *f, int id, u_char *inp, int len)
{
    FSMDEBUG((LOG_INFO, "fsm_rconfack(%s): Rcvd id %d.",
	      PROTO_NAME(f), id));

    if (id != f->reqid || f->seen_ack)		/* Expected id? */
	return;					/* Nope, toss... */
    if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len):
	  (len == 0)) ){
	/* Ack is bad - ignore it */
	log_packet(inp, len, "Received bad configure-ack: ", LOG_ERR);
	FSMDEBUG((LOG_INFO, "%s: received bad Ack (length %d)",
		  PROTO_NAME(f), len));
	return;
    }
    f->seen_ack = 1;

    switch (f->state) {
    case CLOSED:
    case STOPPED:
	fsm_sdata(f, TERMACK, id, NULL, 0);
	break;

    case REQSENT:
	f->state = ACKRCVD;
	f->retransmits = f->maxconfreqtransmits;
	break;

    case ACKRCVD:
	/* Huh? an extra valid Ack? oh well... */
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	fsm_sconfreq(f, 0);
	f->state = REQSENT;
	break;

    case ACKSENT:
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	f->state = OPENED;
	f->retransmits = f->maxconfreqtransmits;
	if (f->callbacks->up)
	    (*f->callbacks->up)(f);	/* Inform upper layers */
	break;

    case OPENED:
	/* Go down and restart negotiation */
	if (f->callbacks->down)
	    (*f->callbacks->down)(f);	/* Inform upper layers */
	fsm_sconfreq(f, 0);		/* Send initial Configure-Request */
	f->state = REQSENT;
	break;
    }
}
Example #9
0
File: fsm.c Project: AoLaD/rtems
/*
 * fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
 */
static void
fsm_rconfnakrej(
    fsm *f,
    int code, int id,
    u_char *inp,
    int len)
{
    int (*proc)(fsm *, u_char *, int);
    int ret;

    if (id != f->reqid || f->seen_ack)	/* Expected id? */
	return;				/* Nope, toss... */
    proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci;
    if (!proc || !(ret = proc(f, inp, len))) {
	/* Nak/reject is bad - ignore it */
	error("Received bad configure-nak/rej: %P", inp, len);
	return;
    }
    f->seen_ack = 1;

    switch (f->state) {
    case CLOSED:
    case STOPPED:
	fsm_sdata(f, TERMACK, id, NULL, 0);
	break;

    case REQSENT:
    case ACKSENT:
	/* They didn't agree to what we wanted - try another request */
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	if (ret < 0)
	    f->state = STOPPED;		/* kludge for stopping CCP */
	else
	    fsm_sconfreq(f, 0);		/* Send Configure-Request */
	break;

    case ACKRCVD:
	/* Got a Nak/reject when we had already had an Ack?? oh well... */
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	fsm_sconfreq(f, 0);
	f->state = REQSENT;
	break;

    case OPENED:
	/* Go down and restart negotiation */
	if (f->callbacks->down)
	    (*f->callbacks->down)(f);	/* Inform upper layers */
	fsm_sconfreq(f, 0);		/* Send initial Configure-Request */
	f->state = REQSENT;
	break;
    }
}
/*
 * fsm_rconfack - Receive Configure-Ack.
 */
static void fsm_rconfack(fsm *f, int id, u_char *inp, int len) {
    ppp_pcb *pcb = f->pcb;

    if (id != f->reqid || f->seen_ack)		/* Expected id? */
	return;					/* Nope, toss... */
    if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len):
	  (len == 0)) ){
	/* Ack is bad - ignore it */
	ppp_error("Received bad configure-ack: %P", inp, len);
	return;
    }
    f->seen_ack = 1;
    f->rnakloops = 0;

    switch (f->state) {
    case PPP_FSM_CLOSED:
    case PPP_FSM_STOPPED:
	fsm_sdata(f, TERMACK, id, NULL, 0);
	break;

    case PPP_FSM_REQSENT:
	f->state = PPP_FSM_ACKRCVD;
	f->retransmits = pcb->settings.fsm_max_conf_req_transmits;
	break;

    case PPP_FSM_ACKRCVD:
	/* Huh? an extra valid Ack? oh well... */
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	fsm_sconfreq(f, 0);
	f->state = PPP_FSM_REQSENT;
	break;

    case PPP_FSM_ACKSENT:
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
	f->state = PPP_FSM_OPENED;
	f->retransmits = pcb->settings.fsm_max_conf_req_transmits;
	if (f->callbacks->up)
	    (*f->callbacks->up)(f);	/* Inform upper layers */
	break;

    case PPP_FSM_OPENED:
	/* Go down and restart negotiation */
	if (f->callbacks->down)
	    (*f->callbacks->down)(f);	/* Inform upper layers */
	fsm_sconfreq(f, 0);		/* Send initial Configure-Request */
	f->state = PPP_FSM_REQSENT;
	break;
    default:
	break;
    }
}
Example #11
0
File: upap.c Project: crvv/lwip
/*
 * upap_lowerdown - The lower layer is down.
 *
 * Cancel all timeouts.
 */
static void upap_lowerdown(ppp_pcb *pcb) {

    if (pcb->upap.us_clientstate == UPAPCS_AUTHREQ)	/* Timeout pending? */
        UNTIMEOUT(upap_timeout, pcb);		/* Cancel timeout */
#if PPP_SERVER
    if (pcb->upap.us_serverstate == UPAPSS_LISTEN && pcb->settings.pap_req_timeout > 0)
        UNTIMEOUT(upap_reqtimeout, pcb);
#endif /* PPP_SERVER */

    pcb->upap.us_clientstate = UPAPCS_INITIAL;
#if PPP_SERVER
    pcb->upap.us_serverstate = UPAPSS_INITIAL;
#endif /* PPP_SERVER */
}
Example #12
0
/*
 * upap_rauthack - Receive Authenticate-Ack.
 */
static void
upap_rauthack(upap_state *u, u_char *inp, int id, int len)
{
  u_char msglen;
  char *msg;

  LWIP_UNUSED_ARG(id);

  UPAPDEBUG((LOG_INFO, "pap_rauthack: Rcvd id %d s=%d\n", id, u->us_clientstate));

  if (u->us_clientstate != UPAPCS_AUTHREQ) { /* XXX */
    return;
  }

  /*
   * Parse message.
   */
  if (len < sizeof (u_char)) {
    UPAPDEBUG((LOG_INFO, "pap_rauthack: rcvd short packet.\n"));
    return;
  }
  GETCHAR(msglen, inp);
  len -= sizeof (u_char);
  if (len < msglen) {
    UPAPDEBUG((LOG_INFO, "pap_rauthack: rcvd short packet.\n"));
    return;
  }
  msg = (char *) inp;
  PRINTMSG(msg, msglen);

  UNTIMEOUT(upap_timeout, u);    /* Cancel timeout */
  u->us_clientstate = UPAPCS_OPEN;

  auth_withpeer_success(u->us_unit, PPP_PAP);
}
Example #13
0
/*
 * np_down - a network protocol has gone down.
 */
void np_down(int unit, u16_t proto)
{
    AUTHDEBUG((LOG_INFO, "np_down: %d proto=%X\n", unit, proto));
    if (--num_np_up == 0 && ppp_settings.idle_time_limit > 0) {
        UNTIMEOUT(check_idle, NULL);
    }
}
Example #14
0
/**
 * Send alternatively the signal quality and the gsm network registration commands.
 */
static void do_gsm_network(gprs_t *gprs)
{
	UNTIMEOUT();

    gprs_set_state(gprs,GPRS_STATE_GSM_NETWORK);

    if (gprs->subState++ == 0)
    {
        gprs->gsmNetwork = GPRS_NETWORK_INVALID;
    }

    if (gprs_state_elapsed(gprs) > GPRS_REGISTRATION_TIMEOUT)
    {
    		LWIP_DEBUGF(GPRS_DEBUG,("gprs: GSM Network registration timeout (%lu)\n",(unsigned long)GPRS_REGISTRATION_TIMEOUT));
    		gprs_do_start(gprs);
    }
    else
    {
    	if (gprs->subState & 0x01)
    	{
    		gprs_command(gprs,"AT+CSQ",'\r');
    	}
    	else
    	{
    		gprs_command(gprs,"AT+CREG?",'\r');
    	}
    }
}
Example #15
0
File: chap.c Project: AoLaD/rtems
/*
 * ChapReceiveSuccess - Receive Success
 */
static void
ChapReceiveSuccess(
    chap_state *cstate,
    u_char *inp,
    u_char id,
    int len)
{

    if (cstate->clientstate == CHAPCS_OPEN)
	/* presumably an answer to a duplicate response */
	return;

    if (cstate->clientstate != CHAPCS_RESPONSE) {
	/* don't know what this is */
	CHAPDEBUG(("ChapReceiveSuccess: in state %d\n", cstate->clientstate));
	return;
    }

    UNTIMEOUT(ChapResponseTimeout, cstate);

    /*
     * Print message.
     */
    if (len > 0)
	PRINTMSG(inp, len);

    cstate->clientstate = CHAPCS_OPEN;

    auth_withpeer_success(cstate->unit, PPP_CHAP);
}
Example #16
0
File: ccp.c Project: rtemss/rtems
/*
 * Handle a CCP-specific code.
 */
static int
ccp_extcode(
    fsm *f,
    int code, int id,
    u_char *p,
    int len)
{
    switch (code) {
    case CCP_RESETREQ:
        if (f->state != OPENED)
            break;
        /* send a reset-ack, which the transmitter will see and
           reset its compression state. */
        fsm_sdata(f, CCP_RESETACK, id, NULL, 0);
        break;

    case CCP_RESETACK:
        if (ccp_localstate[f->unit] & RACK_PENDING && id == f->reqid) {
            ccp_localstate[f->unit] &= ~(RACK_PENDING | RREQ_REPEAT);
            UNTIMEOUT(ccp_rack_timeout, f);
        }
        break;

    default:
        return 0;
    }

    return 1;
}
/*
 * terminate_layer - Start process of shutting down the FSM
 *
 * Cancel any timeout running, notify upper layers we're done, and
 * send a terminate-request message as configured.
 */
static void terminate_layer(fsm *f, int nextstate) {
    ppp_pcb *pcb = f->pcb;

    if( f->state != PPP_FSM_OPENED )
	UNTIMEOUT(fsm_timeout, f);	/* Cancel timeout */
    else if( f->callbacks->down )
	(*f->callbacks->down)(f);	/* Inform upper layers we're down */

    /* Init restart counter and send Terminate-Request */
    f->retransmits = pcb->settings.fsm_max_term_transmits;
    fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
	      (const u_char *) f->term_reason, f->term_reason_len);

    if (f->retransmits == 0) {
	/*
	 * User asked for no terminate requests at all; just close it.
	 * We've already fired off one Terminate-Request just to be nice
	 * to the peer, but we're not going to wait for a reply.
	 */
	f->state = nextstate == PPP_FSM_CLOSING ? PPP_FSM_CLOSED : PPP_FSM_STOPPED;
	if( f->callbacks->finished )
	    (*f->callbacks->finished)(f);
	return;
    }

    TIMEOUT(fsm_timeout, f, pcb->settings.fsm_timeout_time);
    --f->retransmits;

    f->state = nextstate;
}
Example #18
0
/*
 * np_down - a network protocol has gone down.
 */
void
np_down(int unit, int proto)
{
    if (--num_np_up == 0 && idle_time_limit > 0) {
	UNTIMEOUT(check_idle, NULL);
    }
}
Example #19
0
/*
 * fsm_lowerdown - The lower layer is down.
 *
 * Cancel all timeouts and inform upper layers.
 */
void
fsm_lowerdown(fsm *f)
{
  int oldState = f->state;

  LWIP_UNUSED_ARG(oldState);

  switch( f->state ) {
    case LS_CLOSED:
      f->state = LS_INITIAL;
      break;

    case LS_STOPPED:
      f->state = LS_STARTING;
      if( f->callbacks->starting ) {
        (*f->callbacks->starting)(f);
      }
      break;

    case LS_CLOSING:
      f->state = LS_INITIAL;
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      break;

    case LS_STOPPING:
    case LS_REQSENT:
    case LS_ACKRCVD:
    case LS_ACKSENT:
      f->state = LS_STARTING;
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      break;

    case LS_OPENED:
      if( f->callbacks->down ) {
        (*f->callbacks->down)(f);
      }
      f->state = LS_STARTING;
      break;

    default:
      FSMDEBUG(LOG_INFO, ("%s: Down event in state %d (%s)!\n",
          PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
  }

  FSMDEBUG(LOG_INFO, ("%s: lowerdown state %d (%s) -> %d (%s)\n",
      PROTO_NAME(f), oldState, ppperr_strerr[oldState], f->state, ppperr_strerr[f->state]));
}
Example #20
0
/**
 * Send the get sim CCID command.
 */
static void do_sim_iccid(gprs_t * gprs)
{
	UNTIMEOUT();

	gprs->ccid[0] = 0;
	gprs_set_state(gprs,GPRS_STATE_MODEM_CCID);
	gprs_command(gprs,"AT+CCID",'\r');
}
Example #21
0
/**
 * Send the get IMEI command.
 */
static void do_modem_imei(gprs_t * gprs)
{
	UNTIMEOUT();

	gprs->imei[0] = 0;
	gprs_set_state(gprs,GPRS_STATE_MODEM_IMEI);
	gprs_command(gprs,"AT+GSN",'\r');
}
Example #22
0
/*
 * fsm_protreject - Peer doesn't speak this protocol.
 *
 * Treat this as a catastrophic error (RXJ-).
 */
void
fsm_protreject(fsm *f)
{
  switch( f->state ) {
    case LS_CLOSING:
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      /* fall through */
    case LS_CLOSED:
      f->state = LS_CLOSED;
      if( f->callbacks->finished ) {
        (*f->callbacks->finished)(f);
      }
      break;

    case LS_STOPPING:
    case LS_REQSENT:
    case LS_ACKRCVD:
    case LS_ACKSENT:
      UNTIMEOUT(fsm_timeout, f);  /* Cancel timeout */
      /* fall through */
    case LS_STOPPED:
      f->state = LS_STOPPED;
      if( f->callbacks->finished ) {
        (*f->callbacks->finished)(f);
      }
      break;
    
    case LS_OPENED:
      if( f->callbacks->down ) {
        (*f->callbacks->down)(f);
      }
      /* Init restart counter, send Terminate-Request */
      f->retransmits = f->maxtermtransmits;
      fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
            (u_char *) f->term_reason, f->term_reason_len);
      TIMEOUT(fsm_timeout, f, f->timeouttime);
      --f->retransmits;

      f->state = LS_STOPPING;
      break;
    
    default:
      FSMDEBUG(LOG_INFO, ("%s: Protocol-reject event in state %d (%s)!\n",
            PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
    }
}
Example #23
0
/*
 * upap_lowerdown - The lower layer is down.
 *
 * Cancel all timeouts.
 */
static void
upap_lowerdown(int unit)
{
  upap_state *u = &upap[unit];

  UPAPDEBUG((LOG_INFO, "upap_lowerdown: %d s=%d\n", unit, u->us_clientstate));

  if (u->us_clientstate == UPAPCS_AUTHREQ) { /* Timeout pending? */
    UNTIMEOUT(upap_timeout, u);    /* Cancel timeout */
  }
  if (u->us_serverstate == UPAPSS_LISTEN && u->us_reqtimeout > 0) {
    UNTIMEOUT(upap_reqtimeout, u);
  }

  u->us_clientstate = UPAPCS_INITIAL;
  u->us_serverstate = UPAPSS_INITIAL;
}
Example #24
0
/**
 * Send the dial command to the modem.
 */
static void do_modem_dial(gprs_t * gprs)
{

	UNTIMEOUT();

    gprs_set_state(gprs,GPRS_STATE_MODEM_DIAL);
    gprs->connected = 0;
    gprs_command_timeout(gprs,"ATD*99***1#",'\r',GPRS_DIAL_TIMEOUT);
}
Example #25
0
static void chap_lowerdown(ppp_pcb *pcb) {

	pcb->chap_client.flags = 0;
#if PPP_SERVER
	if (pcb->chap_server.flags & TIMEOUT_PENDING)
		UNTIMEOUT(chap_timeout, pcb);
	pcb->chap_server.flags = 0;
#endif /* PPP_SERVER */
}
Example #26
0
/**
 * Start a new gprs connection
 */
static void gprs_do_start(gprs_t * gprs)
{
    UNTIMEOUT();

    LWIP_DEBUGF(GPRS_DEBUG,("gprs: set modem off\n"));

    gprs_arch_modem_off(gprs->device);
    gprs_set_state(gprs,GPRS_STATE_MODEM_OFF);
    TIMEOUT(GPRS_MODEM_OFF_TIME);
}
Example #27
0
File: chap.c Project: AoLaD/rtems
/*
 * ChapLowerDown - The lower layer is down.
 *
 * Cancel all timeouts.
 */
static void
ChapLowerDown(
    int unit)
{
    chap_state *cstate = &chap[unit];

    /* Timeout(s) pending?  Cancel if so. */
    if (cstate->serverstate == CHAPSS_INITIAL_CHAL ||
	cstate->serverstate == CHAPSS_RECHALLENGE)
	UNTIMEOUT(ChapChallengeTimeout, cstate);
    else if (cstate->serverstate == CHAPSS_OPEN
	     && cstate->chal_interval != 0)
	UNTIMEOUT(ChapRechallenge, cstate);
    if (cstate->clientstate == CHAPCS_RESPONSE)
	UNTIMEOUT(ChapResponseTimeout, cstate);

    cstate->clientstate = CHAPCS_INITIAL;
    cstate->serverstate = CHAPSS_INITIAL;
}
Example #28
0
File: auth.c Project: 10code/lwip
/*
 * np_down - a network protocol has gone down.
 */
void
np_down(int unit, u16_t proto)
{
  LWIP_UNUSED_ARG(unit);
  LWIP_UNUSED_ARG(proto);

  AUTHDEBUG(LOG_INFO, ("np_down: %d proto=%X\n", unit, proto));
  if (--num_np_up == 0 && ppp_settings.idle_time_limit > 0) {
    UNTIMEOUT(check_idle, NULL);
  }
}
Example #29
0
/** Stop the CHAP */
void
chap_stop(chap *_this)
{
	_this->state = CHAP_STATE_STOPPED;
	UNTIMEOUT(chap_start, _this);
#ifdef USE_NPPPD_RADIUS
	if (_this->radctx != NULL) {
		radius_cancel_request(_this->radctx);
		_this->radctx = NULL;
	}
#endif
}
Example #30
0
/**
 * Send the modem identify command.
 */
static void do_modem_identify(gprs_t * gprs)
{
	UNTIMEOUT();

#if GPRS_TYPE
	gprs->type[0] = 0;
#endif

    gprs->cgreg = 0;
	gprs_set_state(gprs,GPRS_STATE_MODEM_IDENTIFY);
	gprs_command(gprs,"ATI",'\r');
}