Home | History | Annotate | Download | only in plugins
      1 /*
      2  * minconn.c - pppd plugin to implement a `minconnect' option.
      3  *
      4  * Copyright (c) 1999 Paul Mackerras. All rights reserved.
      5  *
      6  * Redistribution and use in source and binary forms, with or without
      7  * modification, are permitted provided that the following conditions
      8  * are met:
      9  *
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  *
     13  * 2. Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in
     15  *    the documentation and/or other materials provided with the
     16  *    distribution.
     17  *
     18  * 3. The name(s) of the authors of this software must not be used to
     19  *    endorse or promote products derived from this software without
     20  *    prior written permission.
     21  *
     22  * 4. Redistributions of any form whatsoever must retain the following
     23  *    acknowledgment:
     24  *    "This product includes software developed by Paul Mackerras
     25  *     <paulus (at) samba.org>".
     26  *
     27  * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
     28  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
     29  * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
     30  * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     31  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
     32  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
     33  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     34  */
     35 #include <stddef.h>
     36 #include <time.h>
     37 #include "pppd.h"
     38 
     39 char pppd_version[] = VERSION;
     40 
     41 static int minconnect = 0;
     42 
     43 static option_t my_options[] = {
     44 	{ "minconnect", o_int, &minconnect,
     45 	  "Set minimum connect time before idle timeout applies" },
     46 	{ NULL }
     47 };
     48 
     49 static int my_get_idle(struct ppp_idle *idle)
     50 {
     51 	time_t t;
     52 
     53 	if (idle == NULL)
     54 		return minconnect? minconnect: idle_time_limit;
     55 	t = idle->xmit_idle;
     56 	if (idle->recv_idle < t)
     57 		t = idle->recv_idle;
     58 	return idle_time_limit - t;
     59 }
     60 
     61 void plugin_init(void)
     62 {
     63 	info("plugin_init");
     64 	add_options(my_options);
     65 	idle_time_hook = my_get_idle;
     66 }
     67