]> git.ozlabs.org Git - ppp.git/commitdiff
add an example plugin
authorPaul Mackerras <paulus@samba.org>
Sat, 11 Sep 1999 12:13:11 +0000 (12:13 +0000)
committerPaul Mackerras <paulus@samba.org>
Sat, 11 Sep 1999 12:13:11 +0000 (12:13 +0000)
pppd/plugins/Makefile [new file with mode: 0644]
pppd/plugins/minconn.c [new file with mode: 0644]

diff --git a/pppd/plugins/Makefile b/pppd/plugins/Makefile
new file mode 100644 (file)
index 0000000..b33ab27
--- /dev/null
@@ -0,0 +1,8 @@
+CC     = gcc
+CFLAGS = -g -O2 -I.. -I../../include
+LDFLAGS        = -shared
+
+all:   minconn.so
+
+minconn.so: minconn.c
+       $(CC) -o $@ $(LDFLAGS) $(CFLAGS) minconn.c
diff --git a/pppd/plugins/minconn.c b/pppd/plugins/minconn.c
new file mode 100644 (file)
index 0000000..8c9354e
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * minconn.c - pppd plugin to implement a `minconnect' option.
+ *
+ * Copyright 1999 Paul Mackerras.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version
+ *  2 of the License, or (at your option) any later version.
+ */
+#include <stddef.h>
+#include <time.h>
+#include "pppd.h"
+
+static int minconnect = 0;
+
+static option_t my_options[] = {
+       { "minconnect", o_int, &minconnect,
+         "Set minimum connect time before idle timeout applies" },
+       { NULL }
+};
+
+static int my_get_idle(struct ppp_idle *idle)
+{
+       time_t t;
+
+       if (idle == NULL)
+               return minconnect? minconnect: idle_time_limit;
+       t = idle->xmit_idle;
+       if (idle->recv_idle < t)
+               t = idle->recv_idle;
+       return idle_time_limit - t;
+}
+
+void plugin_init(void)
+{
+       info("plugin_init");
+       add_options(my_options);
+       idle_time_hook = my_get_idle;
+}