ppp: implement Max-Failure counter
PATCH 1/1 ppp: implement Max-Failure counter
put a cap on the number of Configure-Nak packets we send.
--- gatchat/ppp_cp.c | 22 ++++++++++++++++++++++ gatchat/ppp_cp.h | 1 + 2 files changed, 23 insertions(+), 0 deletions(-)
gatchat/ppp_cp.c +22 -0
@@ -238,6 +238,15 @@ static void copy_option(gpointer data, gpointer user_data) *location += option->length; } +static void reject_option (gpointer data,gpointer user_data) +{ +struct ppp_option *option = data; +struct pppcp_data *pppcp = user_data; + + pppcp->rejected_options = +g_list_append (pppcp->rejected_options, option); +} +static void print_option (gpointer data,gpointer user_data) {struct ppp_option *option = data;
@@ -315,6 +324,8 @@ static void pppcp_send_configure_ack(struct pppcp_data *data,pppcp_trace (data); + data->failure_counter =0 ; +g_list_foreach (data->acceptable_options, print_option, data);/* subtract for header. */
@@ -347,6 +358,16 @@ static void pppcp_send_configure_nak(struct pppcp_data *data,guint8 olength;guint8 *odata; +/* +* if we have exceeded our Max-Failure counter, we need +* to convert all packets to Configure-Reject +*/ +if (data->failure_counter >= data->max_failure) { +g_list_foreach (data->unacceptable_options, reject_option, data); +g_list_free (data->unacceptable_options); + data->unacceptable_options =NULL ; + } +/* if we have any rejected options, send a config-reject */ if (g_list_length (data->rejected_options)) {pppcp_trace (data);
@@ -395,6 +416,7 @@ static void pppcp_send_configure_nak(struct pppcp_data *data, ntohs(packet->length));pppcp_packet_free (packet); + data->failure_counter++; } }
gatchat/ppp_cp.h +1 -0
@@ -111,6 +111,7 @@ struct pppcp_data {struct pppcp_timer_data config_timer_data;struct pppcp_timer_data terminate_timer_data;guint max_failure; +guint failure_counter;guint32 magic_number;GList *config_options;GList *acceptable_options;
Signature · 1 line
1.6.6.1
Quoted 1 line · On Fri, 2 Apr 2010 22:27:00 -0700 Kristen Carlson Accardi…
put a cap on the number of Configure-Nak packets we send.
Denis - did you have a modem that just went off into a flurry of sending Configure-Naks? If so, would you mind testing this patch on it to see if this helps it accept defeat more gracefully?
Thanks.
Hi Kristen,
Quoted 5 lines
put a cap on the number of Configure-Nak packets we send.
--- gatchat/ppp_cp.c | 22 ++++++++++++++++++++++ gatchat/ppp_cp.h | 1 + 2 files changed, 23 insertions(+), 0 deletions(-)
This patch has been applied, thanks.
Regards,
-Denis