2005-08-16 Paul Jakma <paul.jakma@sun.com>

	* ripd.c: (general) Fix previous commit, broke multicast bind and
	  hence setting of source port, which broke communication with
	  non-borken ripd. Fix removes more stuff from rip_interface.c
	  than it adds to ripd.c ;)
	  (rip_create_socket) the to argument really is a from argument,
	  rename it. Set the source port to RIP port unconditionally, it's
	  required.
	  (rip_send_packet) Set from address correctly for multicast.
	  (rip_output_process) trivial: num can be BSS specified, rather
	  than in body.
	* rip_interface.c: (rip_interface_multicast_set) strip out
	  redundant stuff related to bind, which rip_create_socket does.
	  Just make it set the multicast socket option, as per the
	  interface concerned, no more.
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 4a6f78e..5fa4b7d 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -139,9 +139,6 @@
 void
 rip_interface_multicast_set (int sock, struct connected *connected)
 {
-  int ret;
-  struct servent *sp;
-  struct sockaddr_in from;
   struct in_addr addr;
   struct prefix_ipv4 *p;
   
@@ -161,43 +158,8 @@
 		 "source address %s for interface %s",
 		 sock, inet_ntoa(addr),
 		 connected->ifp->name);
-      return;
     }
-
-  /* Bind myself. */
-  memset (&from, 0, sizeof (struct sockaddr_in));
-
-  /* Set RIP port. */
-  sp = getservbyname ("router", "udp");
-  if (sp) 
-    from.sin_port = sp->s_port;
-  else 
-    from.sin_port = htons (RIP_PORT_DEFAULT);
-
-  /* Address should be any address. */
-  from.sin_family = AF_INET;
-  from.sin_addr = connected->address->u.prefix4;
-#ifdef HAVE_SIN_LEN
-  from.sin_len = sizeof (struct sockaddr_in);
-#endif /* HAVE_SIN_LEN */
-
-  if (ripd_privs.change (ZPRIVS_RAISE))
-    zlog_err ("rip_interface_multicast_set: could not raise privs");
-      
-  ret = bind (sock, (struct sockaddr *) & from, sizeof (struct sockaddr_in));
-  if (ret < 0)
-    {
-      zlog_warn ("Can't bind socket fd %d to %s port %d for "
-		 "interface %s: %s",
-	      	 sock,inet_ntoa(from.sin_addr),
-		 (int)ntohs(from.sin_port),
-		 connected->ifp->name,
-		  safe_strerror (errno));
-    }
-
-  if (ripd_privs.change (ZPRIVS_LOWER))
-    zlog_err ("rip_interface_multicast_set: could not lower privs");
-
+  
   return;
 }