chiark / gitweb /
Allow binding to a chosen address.
[tripe] / peer.c
diff --git a/peer.c b/peer.c
index e1362e9be2a0f81679a873df760d1db8ec4f2f37..9a2fc5918f66258eec3903f8d3b219184363a736 100644 (file)
--- a/peer.c
+++ b/peer.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: peer.c,v 1.7 2003/04/15 14:12:05 mdw Exp $
+ * $Id: peer.c,v 1.8 2003/05/16 12:09:03 mdw Exp $
  *
  * Communication with the peer
  *
@@ -29,6 +29,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: peer.c,v $
+ * Revision 1.8  2003/05/16 12:09:03  mdw
+ * Allow binding to a chosen address.
+ *
  * Revision 1.7  2003/04/15 14:12:05  mdw
  * Insert a newline to improve readability.
  *
@@ -276,14 +279,15 @@ const addr *p_addr(peer *p) { return (&p->peer); }
 
 /* --- @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.
  */
 
-void p_init(unsigned port)
+void p_init(struct in_addr addr, unsigned port)
 {
   int fd;
   struct sockaddr_in sin;
@@ -301,7 +305,7 @@ void p_init(unsigned port)
     die(EXIT_FAILURE, "socket creation failed: %s", strerror(errno));
   BURN(sin);
   sin.sin_family = AF_INET;
-  sin.sin_addr.s_addr = INADDR_ANY;
+  sin.sin_addr = addr;
   sin.sin_port = htons(port);
   if (bind(fd, (struct sockaddr *)&sin, sizeof(sin)))
     die(EXIT_FAILURE, "bind failed: %s", strerror(errno));