chiark / gitweb /
ipif: "include" looks for the file in the directory where "include" appears
[userv-utils.git] / ipif / forwarder.h
index fbaf2e2433dfb102972c102ec589a8370589182e..5397317cb76e1653d7b946d0371872bd52030df4 100644 (file)
@@ -1,4 +1,27 @@
 /*
+ * Encrypting tunnel for userv-ipif tunnels, header file
+ */
+/*
+ * This file is part of ipif, part of userv-utils
+ *
+ * Copyright 1996-2013 Ian Jackson <ijackson@chiark.greenend.org.uk>
+ * Copyright 1998 David Damerell <damerell@chiark.greenend.org.uk>
+ * Copyright 1999,2003
+ *    Chancellor Masters and Scholars of the University of Cambridge
+ * Copyright 2010 Tony Finch <fanf@dotat.at>
+ *
+ * This 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with userv-utils; if not, see http://www.gnu.org/licenses/.
  */
 
 #ifndef MECHS_H
@@ -6,8 +29,8 @@
 
 #include <stdio.h>
 #include <time.h>
-
-#include "automech.h"
+#include <string.h>
+#include <sys/utsname.h>
 
 struct buffer {
   unsigned char *base;
@@ -31,6 +54,8 @@ struct mechanism {
   mdec_functype *decode;
 };
 
+#include "automech.h"
+
 extern const struct mechanism *const mechanismlists[];
 
 /* setup function may call getarg_xxx functions and then
@@ -38,12 +63,14 @@ extern const struct mechanism *const mechanismlists[];
  * 
  * setup_in function may increase maxprefix and maxsuffix
  * code functions modify buffer in place
- * decode function returns message to print
+ * decode function returns 0 meaning packet decoded ok,
+ *  "" meaning discard it quietly, or message to print for verbose discard
  */
   
 const char *getarg_string(void);
 unsigned long getarg_ulong(void);
 
+#define PROGRAM "udptunnel-forwarder"
 extern char programid[];
 
 void *buf_append(struct buffer *buf, size_t amount);
@@ -56,10 +83,14 @@ void fail(const char *msg);
 void sysdiag(const char *msg);
 void diag(const char *msg);
 
+extern const char *const *argv;
+
 time_t now(void);
 void *xmalloc(size_t sz);
 void get_random(void *ptr, size_t sz);
 void random_key(void *ptr, size_t sz);
+void write_must(int fd, const void *p_in, int sz, const char *what);
+void read_must(int fd, void *p_in, int sz, const char *what);
 
 void arg_assert_fail(const char *msg);
 #define arg_assert(v)  (v ? (void)0 : arg_assert_fail(#v))