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