pr->dynamic = 0;
pr->s = *s = new_connection(addr, dummy_realhost, port,
- 0, 1, 0, (Plug) pr, cfg);
+ 0, 1, 0, 0, (Plug) pr, cfg);
if ((err = sk_socket_error(*s)) != NULL) {
sfree(pr);
return err;
sets up a listener on the local machine on (srcaddr:)port
*/
const char *pfd_addforward(char *desthost, int destport, char *srcaddr,
- int port, void *backhandle, const Config *cfg)
+ int port, void *backhandle, const Config *cfg,
+ void **sockdata)
{
static const struct plug_function_table fn_table = {
pfd_closing,
sk_set_private_ptr(s, pr);
+ *sockdata = (void *)s;
+
return NULL;
}
sk_close(s);
}
+/*
+ * Terminate a listener.
+ */
+void pfd_terminate(void *sv)
+{
+ pfd_close((Socket)sv);
+}
+
void pfd_unthrottle(Socket s)
{
struct PFwdPrivate *pr;