[bgpd] Fix triggerable crash when compiled with --disable-bgp-announce

2008-07-22 Paul Jakma <paul.jakma@sun.com>

	* HACKING: Document preference for compiler conditional code, over
	  cpp conditional.
	* configure.ac: DISABLE_BGP_ANNOUNCE always should be defined.
	* bgp_{packet,route,advertise}.c: change to compiler testing of
	  DISABLE_BGP_ANNOUNCE, rather than cpp.

2008-07-22 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>

	* bgp_packet.c: (bgp_update_packet_eor) Fix crash triggerable
	  if a bgpd was compiled with --disable-bgp-announce and if GR is
	  advertised by peer.
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 2424494..6fe2b0f 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,5 +1,16 @@
 2008-07-22 Paul Jakma <paul.jakma@sun.com>
 
+	* bgp_{packet,route,advertise}.c: change to compiler testing of
+	  DISABLE_BGP_ANNOUNCE, rather than cpp.
+
+2008-07-22 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>
+
+	* bgp_packet.c: (bgp_update_packet_eor) Fix crash triggerable
+	  if a bgpd was compiled with --disable-bgp-announce and if GR is 
+	  advertised by peer.
+
+2008-07-22 Paul Jakma <paul.jakma@sun.com>
+
 	* bgp_community.c: (community_str2com) assigns defaults to local
 	  vars
 	* bgp_attr.c: (bgp_attr_parse) match format specifier to arg
diff --git a/bgpd/bgp_advertise.c b/bgpd/bgp_advertise.c
index 73b868a..870aab1 100644
--- a/bgpd/bgp_advertise.c
+++ b/bgpd/bgp_advertise.c
@@ -220,9 +220,8 @@
   struct bgp_adj_out *adj = NULL;
   struct bgp_advertise *adv;
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return;
-#endif /* DISABLE_BGP_ANNOUNCE */
+  if (DISABLE_BGP_ANNOUNCE)
+    return;
 
   /* Look for adjacency information. */
   if (rn)
@@ -274,9 +273,8 @@
   struct bgp_adj_out *adj;
   struct bgp_advertise *adv;
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return;
-#endif /* DISABLE_BGP_ANNOUNCE */
+  if (DISABLE_BGP_ANNOUNCE)
+    return;
 
   /* Lookup existing adjacency, if it is not there return immediately.  */
   for (adj = rn->adj_out; adj; adj = adj->next)
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 623fd9e..4d7f32d 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -235,9 +235,8 @@
   struct stream *s;
   struct stream *packet;
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return;
-#endif /* DISABLE_BGP_ANNOUNCE */
+  if (DISABLE_BGP_ANNOUNCE)
+    return NULL;
 
   if (BGP_DEBUG (normal, NORMAL))
     zlog_debug ("send End-of-RIB for %s to %s", afi_safi_print (afi, safi), peer->host);
@@ -369,9 +368,8 @@
   char attrstr[BUFSIZ];
   char buf[BUFSIZ];
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return;
-#endif /* DISABLE_BGP_ANNOUNCE */
+  if (DISABLE_BGP_ANNOUNCE)
+    return;
 
   if (afi == AFI_IP)
     str2prefix ("0.0.0.0/0", &p);
@@ -438,9 +436,8 @@
   bgp_size_t total_attr_len;
   char buf[BUFSIZ];
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return;
-#endif /* DISABLE_BGP_ANNOUNCE */
+  if (DISABLE_BGP_ANNOUNCE)
+    return;
 
   if (afi == AFI_IP)
     str2prefix ("0.0.0.0/0", &p);
@@ -958,9 +955,8 @@
   struct bgp_filter *filter;
   int orf_refresh = 0;
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return;
-#endif /* DISABLE_BGP_ANNOUNCE */
+  if (DISABLE_BGP_ANNOUNCE)
+    return;
 
   filter = &peer->filter[afi][safi];
 
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 4fbc4ba..b639db0 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -742,9 +742,8 @@
   filter = &peer->filter[afi][safi];
   bgp = peer->bgp;
   
-#ifdef DISABLE_BGP_ANNOUNCE
-  return 0;
-#endif
+  if (DISABLE_BGP_ANNOUNCE)
+    return 0;
 
   /* Do not send announces to RS-clients from the 'normal' bgp_table. */
   if (CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT))
@@ -1095,9 +1094,8 @@
   filter = &rsclient->filter[afi][safi];
   bgp = rsclient->bgp;
 
-#ifdef DISABLE_BGP_ANNOUNCE
-  return 0;
-#endif
+  if (DISABLE_BGP_ANNOUNCE)
+    return 0;
 
   /* Do not send back route to sender. */
   if (from == rsclient)