Index: sys/net/if_spppsubr.c =================================================================== --- sys/net/if_spppsubr.c +++ sys/net/if_spppsubr.c @@ -131,6 +131,13 @@ #define LCP_OPT_RESERVED 6 /* reserved */ #define LCP_OPT_PROTO_COMP 7 /* protocol field compression */ #define LCP_OPT_ADDR_COMP 8 /* address/control field compression */ +#define LCP_OPT_FCS_ALTS 9 /* FCS alternatives */ +#define LCP_OPT_SELF_DESC_PAD 10 /* self-describing padding */ +#define LCP_OPT_CALL_BACK 13 /* callback */ +#define LCP_OPT_COMPOUND_FRMS 15 /* compound frames */ +#define LCP_OPT_MP_MRRU 17 /* multilink MRRU */ +#define LCP_OPT_MP_SSNHF 18 /* multilink short seq. numbers */ +#define LCP_OPT_MP_EID 19 /* multilink endpoint discriminator */ #define IPCP_OPT_ADDRESSES 1 /* both IP addresses; deprecated */ #define IPCP_OPT_COMPRESSION 2 /* IP compression protocol (VJ) */ @@ -2319,6 +2326,36 @@ */ sp->pp_flags |= PP_NEEDAUTH; continue; + case LCP_OPT_MP_EID: + if (len >= p[1] && p[1] >= 3) { + if (debug) + log(-1, " [rej]"); + break; + } + if (debug) + log(-1, " [invalid]"); + break; + case LCP_OPT_MP_SSNHF: + if (len >= 2 && p[1] == 2) { + if (debug) + log(-1, " [rej]"); + break; + } + if (debug) + log(-1, " [invalid]"); + break; + case LCP_OPT_MP_MRRU: + /* Multilink maximum received reconstructed unit */ + /* should be fall through, both are same length */ + /* for now, check, then reject anyway */ + if (len >= 4 && p[1] == 4) { + if (debug) + log(-1, " %d [rej]", (p[2] << 8) + p[3]); + break; + } + if (debug) + log(-1, " [invalid]"); + break; default: /* Others not supported. */ if (debug) @@ -5285,6 +5322,12 @@ case LCP_OPT_MAGIC: return "magic"; case LCP_OPT_PROTO_COMP: return "proto-comp"; case LCP_OPT_ADDR_COMP: return "addr-comp"; + case LCP_OPT_SELF_DESC_PAD: return "sdpad"; + case LCP_OPT_CALL_BACK: return "callback"; + case LCP_OPT_COMPOUND_FRMS: return "cmpd-frms"; + case LCP_OPT_MP_MRRU: return "mrru"; + case LCP_OPT_MP_SSNHF: return "mp-ssnhf"; + case LCP_OPT_MP_EID: return "mp-eid"; } snprintf (buf, sizeof(buf), "lcp/0x%x", opt); return buf;