* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#define RCSID "$Id: lcp.c,v 1.71 2004/10/31 22:23:18 paulus Exp $"
+#define RCSID "$Id: lcp.c,v 1.74 2004/11/13 02:28:15 paulus Exp $"
/*
* TODO:
static int lcp_cilen __P((fsm *)); /* Return length of our CI */
static void lcp_addci __P((fsm *, u_char *, int *)); /* Add our CI to pkt */
static int lcp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
-static int lcp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
+static int lcp_nakci __P((fsm *, u_char *, int, int)); /* Peer nak'd our CI */
static int lcp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
static int lcp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv peer CI */
static void lcp_up __P((fsm *)); /* We're UP */
ao->neg_magicnumber = 1;
ao->neg_pcompression = 1;
ao->neg_accompression = 1;
-#ifdef CBCP_SUPPORT
- ao->neg_cbcp = 1;
-#endif
ao->neg_endpoint = 1;
}
{
fsm *f = &lcp_fsm[unit];
- if (phase != PHASE_DEAD)
+ if (phase != PHASE_DEAD && phase != PHASE_MASTER)
new_phase(PHASE_TERMINATE);
if (f->state == STOPPED && f->flags & (OPT_PASSIVE|OPT_SILENT)) {
/*
* 1 - Nak was good.
*/
static int
-lcp_nakci(f, p, len)
+lcp_nakci(f, p, len, treat_as_reject)
fsm *f;
u_char *p;
int len;
+ int treat_as_reject;
{
lcp_options *go = &lcp_gotoptions[f->unit];
lcp_options *wo = &lcp_wantoptions[f->unit];
*/
if (go->neg_mrru) {
NAKCISHORT(CI_MRRU, neg_mrru,
- if (cishort <= wo->mrru)
+ if (treat_as_reject)
+ try.neg_mrru = 0;
+ else if (cishort <= wo->mrru)
try.mrru = cishort;
);
}