[PATCH, RFC 2/3] BGP: Correctly handle changes to c->{check_link, bfd} when reconfiguring.

Lennert Buytenhek buytenh at wantstofly.org
Thu Mar 9 15:30:24 CET 2017


Since the area between 'struct proto_config c' and 'char *password'
in 'struct bgp_config' is compared using memcmp() in bgp_reconfigure(),
move ->check_link and ->bfd so that they are part of that area.  Also
add a note to 'struct bgp_config' to avoid this tripping up people in
the future.
---
 proto/bgp/bgp.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h
index 0b8cb46..0b69333 100644
--- a/proto/bgp/bgp.h
+++ b/proto/bgp/bgp.h
@@ -19,6 +19,8 @@ struct eattr;
 
 struct bgp_config {
   struct proto_config c;
+
+  /* start of config vars compared using memcmp() in bgp_reconfigure() */
   u32 local_as, remote_as, remote_as2;
   ip_addr remote_ip;
   ip_addr source_addr;			/* Source address to use */
@@ -62,11 +64,12 @@ struct bgp_config {
   unsigned error_delay_time_min;	/* Time to wait after an error is detected */
   unsigned error_delay_time_max;
   unsigned disable_after_error;		/* Disable the protocol when error is detected */
+  int check_link;			/* Use iface link state for liveness detection */
+  int bfd;				/* Use BFD for liveness detection */
+  /* end of config vars compared using memcmp() in bgp_reconfigure() */
 
   char *password;			/* Password used for MD5 authentication */
   struct rtable_config *igp_table;	/* Table used for recursive next hop lookups */
-  int check_link;			/* Use iface link state for liveness detection */
-  int bfd;				/* Use BFD for liveness detection */
 };
 
 #define MLL_SELF 1
-- 
2.9.3


More information about the Bird-users mailing list