diff options
| author | Dmitry Kozlov <xeb@mail.ru> | 2017-08-08 18:39:58 +0300 |
|---|---|---|
| committer | Dmitry Kozlov <xeb@mail.ru> | 2017-08-08 18:39:58 +0300 |
| commit | 4b7c9dea22afa4ab598b1b6fae2c0d470aa32d9f (patch) | |
| tree | ee1ad9ef1de38763ccab699fc43804ae27447fc4 /accel-pppd/ppp | |
| parent | 945a132a7af2862d89fa1fb86c175fe595419eef (diff) | |
| parent | 685a8b314121dbdde3bdcfe6308497123a878420 (diff) | |
| download | accel-ppp-4b7c9dea22afa4ab598b1b6fae2c0d470aa32d9f.tar.gz accel-ppp-4b7c9dea22afa4ab598b1b6fae2c0d470aa32d9f.zip | |
Merge branch 'master' of github.com:xebd/accel-ppp
Diffstat (limited to 'accel-pppd/ppp')
| -rw-r--r-- | accel-pppd/ppp/lcp_opt_mru.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/accel-pppd/ppp/lcp_opt_mru.c b/accel-pppd/ppp/lcp_opt_mru.c index 486ade7b..2f321fb6 100644 --- a/accel-pppd/ppp/lcp_opt_mru.c +++ b/accel-pppd/ppp/lcp_opt_mru.c @@ -27,6 +27,7 @@ static int mru_send_conf_nak(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, ui static int mru_recv_conf_req(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, uint8_t *ptr); static int mru_recv_conf_ack(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, uint8_t *ptr); static int mru_recv_conf_nak(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, uint8_t *ptr); +static int mru_recv_conf_rej(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, uint8_t *ptr); static void mru_print(void (*print)(const char *fmt, ...), struct lcp_option_t*, uint8_t *ptr); struct mru_option_t @@ -35,6 +36,7 @@ struct mru_option_t int mru; int mtu; int naked:1; + int rejected:1; }; static struct lcp_option_handler_t mru_opt_hnd= @@ -45,6 +47,7 @@ static struct lcp_option_handler_t mru_opt_hnd= .recv_conf_req = mru_recv_conf_req, .recv_conf_ack = mru_recv_conf_ack, .recv_conf_nak = mru_recv_conf_nak, + .recv_conf_rej = mru_recv_conf_rej, .free = mru_free, .print = mru_print, }; @@ -81,7 +84,7 @@ static int mru_send_conf_req(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, ui struct mru_option_t *mru_opt = container_of(opt, typeof(*mru_opt), opt); struct lcp_opt16_t *opt16 = (struct lcp_opt16_t*)ptr; - if (mru_opt->naked) + if (mru_opt->naked || mru_opt->rejected) return 0; opt16->hdr.id = CI_MRU; @@ -141,6 +144,13 @@ static int mru_recv_conf_nak(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, ui mru_opt->naked = 1; return 0; } +static int mru_recv_conf_rej(struct ppp_lcp_t *lcp, struct lcp_option_t *opt, uint8_t *ptr) +{ + struct mru_option_t *mru_opt = container_of(opt, typeof(*mru_opt), opt); + + mru_opt->rejected = 1; + return 0; +} static void mru_print(void (*print)(const char *fmt, ...), struct lcp_option_t *opt, uint8_t *ptr) { |
