[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OpenBGP nexthop



* Claudio Jeker <cjeker_(_at_)_diehard_(_dot_)_n-r-g_(_dot_)_com> [2006-04-12 14:21]:
> On Wed, Apr 12, 2006 at 01:36:46PM +0200, Sylvain Coutant wrote:
> > > What was the state of the parent interface and what kind of interface is
> > > it?
> > Bge driver. It was up and running : BGP sessions were established
> > through the vlans reported as invalid by OpenBGP.
> I bet Henning's diff will fix this.

chances are good, at least.

Index: kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/kroute.c,v
retrieving revision 1.145
diff -u -p -r1.145 kroute.c
--- kroute.c	22 Mar 2006 13:30:35 -0000	1.145
+++ kroute.c	11 Apr 2006 11:07:27 -0000
@@ -2123,21 +2123,23 @@ dispatch_rtmsg(void)
 	lim = buf + n;
 	for (next = buf; next < lim; next += rtm->rtm_msglen) {
 		rtm = (struct rt_msghdr *)next;
-		sa = (struct sockaddr *)(rtm + 1);
-		get_rtaddrs(rtm->rtm_addrs, sa, rti_info);
-
-		if (rtm->rtm_pid == kr_state.pid)	/* cause by us */
-			continue;
-
-		if (rtm->rtm_errno)			/* failed attempts... */
-			continue;
 
 		switch (rtm->rtm_type) {
 		case RTM_ADD:
 		case RTM_CHANGE:
 		case RTM_DELETE:
+			sa = (struct sockaddr *)(rtm + 1);
+			get_rtaddrs(rtm->rtm_addrs, sa, rti_info);
+
+			if (rtm->rtm_pid == kr_state.pid)	/* cause by us */
+				continue;
+
+			if (rtm->rtm_errno)			/* failed attempts... */
+				continue;
+
 			if (rtm->rtm_flags & RTF_LLINFO)	/* arp cache */
 				continue;
+
 			if (dispatch_rtmsg_addr(rtm, rti_info) == -1)
 				return (-1);
 			break;



-- 
BS Web Services, http://www.bsws.de/
OpenBSD-based Webhosting, Mail Services, Managed Servers, ...
Unix is very simple, but it takes a genius to understand the simplicity.
(Dennis Ritchie)