Podrška #20023 » mpppc.patch
| release/src/router/pppd/include/net/ppp-comp.h | ||
|---|---|---|
|
#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
|
||
|
#define LZS_EXT_BIT_COMP 0x20 /* bit C */
|
||
|
/* MPPE/MPPC definitions by J.D.*/
|
||
|
#define MPPE_STATELESS MPPE_H_BIT /* configuration bit H */
|
||
|
#define MPPE_40BIT MPPE_L_BIT /* configuration bit L */
|
||
|
#define MPPE_56BIT MPPE_M_BIT /* configuration bit M */
|
||
|
#define MPPE_128BIT MPPE_S_BIT /* configuration bit S */
|
||
|
#define MPPE_MPPC MPPE_C_BIT /* configuration bit C */
|
||
|
/*
|
||
|
* Definitions for Stac LZS.
|
||
|
*/
|
||
|
#define CI_LZS 17 /* config option for Stac LZS */
|
||
|
#define CILEN_LZS 5 /* length of config option */
|
||
|
#define LZS_OVHD 4 /* max. LZS overhead */
|
||
|
#define LZS_HIST_LEN 2048 /* LZS history size */
|
||
|
#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
|
||
|
#define LZS_MODE_NONE 0
|
||
|
#define LZS_MODE_LCB 1
|
||
|
#define LZS_MODE_CRC 2
|
||
|
#define LZS_MODE_SEQ 3
|
||
|
#define LZS_MODE_EXT 4
|
||
|
#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
|
||
|
#define LZS_EXT_BIT_COMP 0x20 /* bit C */
|
||
|
/*
|
||
|
* Definitions for other, as yet unsupported, compression methods.
|
||
|
*/
|
||
| release/src/router/pppd/pppd/ccp.c | ||
|---|---|---|
|
return 1;
|
||
|
}
|
||
|
#ifdef MPPE
|
||
|
/*
|
||
|
* Functions called from config options
|
||
|
*/
|
||
|
/*
|
||
|
MPPE suboptions:
|
||
|
required - require MPPE; disconnect if peer doesn't support it
|
||
|
stateless - use stateless mode
|
||
|
no40 - disable 40 bit keys
|
||
|
no56 - disable 56 bit keys
|
||
|
no128 - disable 128 bit keys
|
||
|
*/
|
||
|
int setmppe(char **argv)
|
||
|
{
|
||
|
int i;
|
||
|
char *str, cmdbuf[16];
|
||
|
ccp_allowoptions[0].mppe = 1;
|
||
|
ccp_allowoptions[0].mppe_40 = 1;
|
||
|
ccp_allowoptions[0].mppe_56 = 1;
|
||
|
ccp_allowoptions[0].mppe_128 = 1;
|
||
|
ccp_allowoptions[0].mppe_stateless = 0;
|
||
|
ccp_wantoptions[0].mppe = 0;
|
||
|
str = *argv;
|
||
|
while (1) {
|
||
|
i = 0;
|
||
|
memset(cmdbuf, '\0', 16);
|
||
|
while ((i < 16) && (*str != ',') && (*str != '\0'))
|
||
|
cmdbuf[i++] = *str++;
|
||
|
cmdbuf[i] = '\0';
|
||
|
if (!strncasecmp(cmdbuf, "no40", strlen("no40"))) {
|
||
|
ccp_allowoptions[0].mppe_40 = 0;
|
||
|
goto next_param;
|
||
|
} else if (!strncasecmp(cmdbuf, "no56", strlen("no56"))) {
|
||
|
ccp_allowoptions[0].mppe_56 = 0;
|
||
|
goto next_param;
|
||
|
} else if (!strncasecmp(cmdbuf, "no128", strlen("no128"))) {
|
||
|
ccp_allowoptions[0].mppe_128 = 0;
|
||
|
goto next_param;
|
||
|
} else if (!strncasecmp(cmdbuf, "stateless", strlen("stateless"))) {
|
||
|
ccp_allowoptions[0].mppe_stateless = 1;
|
||
|
goto next_param;
|
||
|
} else if (!strncasecmp(cmdbuf, "required", strlen("required"))) {
|
||
|
ccp_wantoptions[0].mppe = 1;
|
||
|
goto next_param;
|
||
|
} else {
|
||
|
option_error("invalid parameter '%s' for mppe option", cmdbuf);
|
||
|
return 0;
|
||
|
}
|
||
|
next_param:
|
||
|
if (*str == ',') {
|
||
|
str++;
|
||
|
continue;
|
||
|
}
|
||
|
if (*str == '\0') {
|
||
|
if (!(ccp_allowoptions[0].mppe_40 || ccp_allowoptions[0].mppe_56 ||
|
||
|
ccp_allowoptions[0].mppe_128)) {
|
||
|
if (ccp_wantoptions[0].mppe == 1) {
|
||
|
option_error("You require MPPE but you have switched off "
|
||
|
"all encryption key lengths.");
|
||
|
return 0;
|
||
|
}
|
||
|
ccp_wantoptions[0].mppe = ccp_allowoptions[0].mppe = 0;
|
||
|
ccp_wantoptions[0].mppe_stateless =
|
||
|
ccp_allowoptions[0].mppe_stateless = 0;
|
||
|
} else {
|
||
|
ccp_allowoptions[0].mppe = 1;
|
||
|
ccp_wantoptions[0].mppe_stateless =
|
||
|
ccp_allowoptions[0].mppe_stateless;
|
||
|
if (ccp_wantoptions[0].mppe == 1) {
|
||
|
ccp_wantoptions[0].mppe_40 = ccp_allowoptions[0].mppe_40;
|
||
|
ccp_wantoptions[0].mppe_56 = ccp_allowoptions[0].mppe_56;
|
||
|
ccp_wantoptions[0].mppe_128 = ccp_allowoptions[0].mppe_128;
|
||
|
}
|
||
|
}
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
int setnomppe(void)
|
||
|
{
|
||
|
ccp_wantoptions[0].mppe = ccp_allowoptions[0].mppe = 0;
|
||
|
ccp_wantoptions[0].mppe_40 = ccp_allowoptions[0].mppe_40 = 0;
|
||
|
ccp_wantoptions[0].mppe_56 = ccp_allowoptions[0].mppe_56 = 0;
|
||
|
ccp_wantoptions[0].mppe_128 = ccp_allowoptions[0].mppe_128 = 0;
|
||
|
ccp_wantoptions[0].mppe_stateless = ccp_allowoptions[0].mppe_stateless = 0;
|
||
|
return 1;
|
||
|
}
|
||
|
#endif /* MPPE */
|
||
|
/*
|
||
|
* ccp_init - initialize CCP.
|
||
|
*/
|
||
| ... | ... | |
|
} else
|
||
|
ccp_localstate[f->unit] &= ~RACK_PENDING;
|
||
|
}
|
||
| release/src/router/pppd/pppd/pppd.8 | ||
|---|---|---|
|
.B mppc
|
||
|
Enables MPPC (Microsoft Point to Point Compression). This is the default.
|
||
|
.TP
|
||
|
.B mppe\-stateful
|
||
|
Allow MPPE to use stateful mode. Stateless mode is still attempted first.
|
||
|
The default is to disallow stateful mode.
|
||
|
.B mppc
|
||
|
Enables MPPC (Microsoft Point to Point Compression). This is the default.
|
||
|
.TP
|
||
|
.B mppe \fIsubopt1[,subopt2[,subopt3[..]]]
|
||
|
Modify MPPE (Microsoft Point to Point Encryption) parameters. In order
|
||
|
for MPPE to successfully come up, you must have authenticated with either
|
||
|
MS-CHAP or MS-CHAPv2. By default MPPE is optional, it means that pppd will
|
||
|
not propose MPPE to the peer, but will negotiate MPPE if peer wants that.
|
||
|
You can change this using \fIrequired\fR suboption.
|
||
|
This option is presently only supported under Linux, and only if your
|
||
|
kernel has been configured to include MPPE support.
|
||
|
.IP
|
||
|
MPPE suboptions:
|
||
|
.br
|
||
|
\fIrequired\fR - require MPPE; disconnect if peer doesn't support it,
|
||
|
.br
|
||
|
\fIstateless\fR - try to negotiate stateless mode; default is stateful,
|
||
|
.br
|
||
|
\fIno40\fR - disable 40 bit keys,
|
||
|
.br
|
||
|
\fIno56\fR - disable 56 bit keys,
|
||
|
.br
|
||
|
\fIno128\fR - disable 128 bit keys
|
||
|
.TP
|
||
|
.B mpshortseq
|
||
|
Enables the use of short (12-bit) sequence numbers in multilink
|
||