chiark / gitweb /
Allow binding to a chosen address.
[tripe] / tripe.h
diff --git a/tripe.h b/tripe.h
index 069840e7358d623218aa83072261b5d4e565b7f3..1f73d6ba22ddcf5a33072189666351e8de68e7a9 100644 (file)
--- a/tripe.h
+++ b/tripe.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: tripe.h,v 1.12 2003/04/06 10:25:17 mdw Exp $
+ * $Id: tripe.h,v 1.15 2003/05/16 12:09:03 mdw Exp $
  *
  * Main header file for TrIPE
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: tripe.h,v $
+ * Revision 1.15  2003/05/16 12:09:03  mdw
+ * Allow binding to a chosen address.
+ *
+ * Revision 1.14  2003/04/06 10:36:33  mdw
+ * Rearrange so as not to include Linux headers unless we need to.
+ *
+ * Revision 1.13  2003/04/06 10:26:35  mdw
+ * Report peer name on decrypt errors.
+ *
  * Revision 1.12  2003/04/06 10:25:17  mdw
  * Support Linux TUN/TAP device.  Fix some bugs.
  *
 #include <arpa/inet.h>
 #include <netdb.h>
 
-#if TUN_TYPE == TUN_LINUX
-#  include <linux/if.h>
-#  include <linux/if_tun.h>
-#endif
-
 #include <pwd.h>
 #include <grp.h>
 
@@ -309,6 +313,7 @@ typedef union addr {
 typedef struct keyset {
   struct keyset *next;                 /* Next active keyset in the list */
   unsigned ref;                                /* Reference count for keyset */
+  struct peer *p;                      /* Pointer to peer structure */
   time_t t_exp;                                /* Expiry time for this keyset */
   unsigned long sz_exp;                        /* Data limit for the keyset */
   T( unsigned seq; )                   /* Sequence number for tracing */
@@ -384,6 +389,11 @@ enum {
  * Used to maintain system-specific information about the tunnel interface.
  */
 
+#if TUN_TYPE == TUN_LINUX
+#  include <linux/if.h>
+#  include <linux/if_tun.h>
+#endif
+
 typedef struct tunnel {
 #if TUN_TYPE == TUN_UNET 
   sel_file f;                          /* Selector for Usernet device */
@@ -611,6 +621,7 @@ extern void ks_drop(keyset */*ks*/);
  *
  * Arguments:  @const void *k@ = pointer to key material
  *             @size_t x, y, z@ = offsets into key material (see below)
+ *             @peer *p@ = pointer to peer information
  *
  * Returns:    A pointer to the new keyset.
  *
@@ -630,7 +641,8 @@ extern void ks_drop(keyset */*ks*/);
  */
 
 extern keyset *ks_gen(const void */*k*/,
-                     size_t /*x*/, size_t /*y*/, size_t /*z*/);
+                     size_t /*x*/, size_t /*y*/, size_t /*z*/,
+                     peer */*p*/);
 
 /* --- @ks_tregen@ --- *
  *
@@ -884,14 +896,15 @@ extern const addr *p_addr(peer */*p*/);
 
 /* --- @p_init@ --- *
  *
- * Arguments:  @unsigned port@ = port number to listen to
+ * Arguments:  @struct in_addr addr@ = address to bind to
+ *             @unsigned port@ = port number to listen to
  *
  * Returns:    ---
  *
  * Use:                Initializes the peer system; creates the socket.
  */
 
-extern void p_init(unsigned /*port*/);
+extern void p_init(struct in_addr /*addr*/, unsigned /*port*/);
 
 /* --- @p_port@ --- *
  *