diff --git a/ripd/ChangeLog b/ripd/ChangeLog
index 68813f1..ba13a59 100644
--- a/ripd/ChangeLog
+++ b/ripd/ChangeLog
@@ -1,3 +1,12 @@
+2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID
+	  macro to simplify logic.
+	  (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does
+	  not give a useful result if prefixlen is 32 (we require a peer
+	  address in such cases).
+	* ripd.c: (rip_update_interface) Fix same bug as above.
+
 2006-09-11 Paul Jakma <paul.jakma@sun.com>
 
 	* ripd.c: (rip_read) remove gratuitous use of mid-function
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index a5b12db..c8a1a84 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -141,16 +141,10 @@
 rip_interface_multicast_set (int sock, struct connected *connected)
 {
   struct in_addr addr;
-  struct prefix_ipv4 *p;
   
   assert (connected != NULL);
   
-  if (if_is_pointopoint(connected->ifp) && CONNECTED_DEST_HOST(connected))
-    p = (struct prefix_ipv4 *) connected->destination;
-  else
-    p = (struct prefix_ipv4 *) connected->address;
-  
-  addr = p->prefix;
+  addr = CONNECTED_ID(connected)->u.prefix4;
 
   if (setsockopt_multicast_ipv4 (sock, IP_MULTICAST_IF, addr, 0, 
                                  connected->ifp->ifindex) < 0) 
@@ -197,13 +191,16 @@
 	      memset (&to, 0, sizeof (struct sockaddr_in));
 	      to.sin_port = htons (RIP_PORT_DEFAULT);
               if (connected->destination)
-                /* use specified broadcast or point-to-point destination addr */
+                /* use specified broadcast or peer destination addr */
                 to.sin_addr = connected->destination->u.prefix4;
-              else
+              else if (connected->address->prefixlen < IPV4_MAX_PREFIXLEN)
 	        /* calculate the appropriate broadcast address */
                 to.sin_addr.s_addr =
 		  ipv4_broadcast_addr(connected->address->u.prefix4.s_addr,
 				      connected->address->prefixlen);
+	      else
+		/* do not know where to send the packet */
+	        continue;
 
 	      if (IS_RIP_DEBUG_EVENT)
 		zlog_debug ("SEND request to %s", inet_ntoa (to.sin_addr));
diff --git a/ripd/ripd.c b/ripd/ripd.c
index a1630f6..afa49fd 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -2449,19 +2449,22 @@
           /* Destination address and port setting. */
           memset (&to, 0, sizeof (struct sockaddr_in));
           if (ifc->destination)
-            /* use specified broadcast or point-to-point destination addr */
+            /* use specified broadcast or peer destination addr */
             to.sin_addr = ifc->destination->u.prefix4;
-          else
+          else if (ifc->address->prefixlen < IPV4_MAX_PREFIXLEN)
             /* calculate the appropriate broadcast address */
             to.sin_addr.s_addr =
               ipv4_broadcast_addr(ifc->address->u.prefix4.s_addr,
                                   ifc->address->prefixlen);
+	  else
+	    /* do not know where to send the packet */
+	    return;
           to.sin_port = htons (RIP_PORT_DEFAULT);
 
           if (IS_RIP_DEBUG_EVENT)
-            zlog_debug ("%s announce to %s on %s",
-                       if_is_pointopoint (ifc->ifp) ? "unicast" : "broadcast",
-                       inet_ntoa (to.sin_addr), ifc->ifp->name);
+            zlog_debug("%s announce to %s on %s",
+		       CONNECTED_PEER(ifc) ? "unicast" : "broadcast",
+		       inet_ntoa (to.sin_addr), ifc->ifp->name);
 
           rip_output_process (ifc, &to, route_type, version);
         }
