| 1980 | } |
| 1981 | |
| 1982 | static void |
| 1983 | sppp_close_event(const struct cp *cp, struct sppp *sp) |
| 1984 | { |
| 1985 | STDDCL; |
| 1986 | |
| 1987 | if (debug) |
| 1988 | log(LOG_DEBUG, SPP_FMT "%s close(%s)\n", |
| 1989 | SPP_ARGS(ifp), cp->name, |
| 1990 | sppp_state_name(sp->state[cp->protoidx])); |
| 1991 | |
| 1992 | switch (sp->state[cp->protoidx]) { |
| 1993 | case STATE_INITIAL: |
| 1994 | case STATE_CLOSED: |
| 1995 | case STATE_CLOSING: |
| 1996 | break; |
| 1997 | case STATE_STARTING: |
| 1998 | sppp_cp_change_state(cp, sp, STATE_INITIAL); |
| 1999 | (cp->tlf)(sp); |
| 2000 | break; |
| 2001 | case STATE_STOPPED: |
| 2002 | sppp_cp_change_state(cp, sp, STATE_CLOSED); |
| 2003 | break; |
| 2004 | case STATE_STOPPING: |
| 2005 | sppp_cp_change_state(cp, sp, STATE_CLOSING); |
| 2006 | break; |
| 2007 | case STATE_OPENED: |
| 2008 | (cp->tld)(sp); |
| 2009 | /* FALLTHROUGH */ |
| 2010 | case STATE_REQ_SENT: |
| 2011 | case STATE_ACK_RCVD: |
| 2012 | case STATE_ACK_SENT: |
| 2013 | sp->rst_counter[cp->protoidx] = sp->lcp.max_terminate; |
| 2014 | sppp_cp_send(sp, cp->proto, TERM_REQ, |
| 2015 | ++sp->pp_seq[cp->protoidx], 0, 0); |
| 2016 | sppp_cp_change_state(cp, sp, STATE_CLOSING); |
| 2017 | break; |
| 2018 | } |
| 2019 | } |
| 2020 | |
| 2021 | static void |
| 2022 | sppp_to_event(const struct cp *cp, struct sppp *sp) |
no test coverage detected