projects
/
l2tpns.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3627fbc
)
Don't assume BGP peer sends back negotiated hold time, pick smallest
author
bodea
<bodea>
Mon, 15 Nov 2004 06:49:56 +0000
(06:49 +0000)
committer
bodea
<bodea>
Mon, 15 Nov 2004 06:49:56 +0000
(06:49 +0000)
Changes
patch
|
blob
|
history
bgp.c
patch
|
blob
|
history
diff --git
a/Changes
b/Changes
index
5ac335f
..
0cde786
100644
(file)
--- a/
Changes
+++ b/
Changes
@@
-1,5
+1,6
@@
* ? Brendan O'Dea <bod@optusnet.com.au> 2.0.7
- Fix socket creation in host_unreachable() (thanks to Bjørn Augestad)
* ? Brendan O'Dea <bod@optusnet.com.au> 2.0.7
- Fix socket creation in host_unreachable() (thanks to Bjørn Augestad)
+- Don't assume BGP peer sends back negotiated hold time, pick smallest
* Thu Nov 11 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.6
- Make BGP keepalive/hold time configurable
* Thu Nov 11 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.6
- Make BGP keepalive/hold time configurable
diff --git
a/bgp.c
b/bgp.c
index
2d411e7
..
bcff677
100644
(file)
--- a/
bgp.c
+++ b/
bgp.c
@@
-10,7
+10,7
@@
* nor RFC2385 (which requires a kernel patch on 2.4 kernels).
*/
* nor RFC2385 (which requires a kernel patch on 2.4 kernels).
*/
-char const *cvs_id_bgp = "$Id: bgp.c,v 1.
6 2004/11/11 03:07:42
bodea Exp $";
+char const *cvs_id_bgp = "$Id: bgp.c,v 1.
7 2004/11/15 06:49:56
bodea Exp $";
#include <stdlib.h>
#include <unistd.h>
#include <stdlib.h>
#include <unistd.h>
@@
-857,6
+857,7
@@
static int bgp_handle_input(struct bgp_peer *peer)
case BGP_MSG_OPEN:
{
struct bgp_data_open data;
case BGP_MSG_OPEN:
{
struct bgp_data_open data;
+ int hold;
int i;
for (i = 0; i < sizeof(p->header.marker); i++)
int i;
for (i = 0; i < sizeof(p->header.marker); i++)
@@
-903,15
+904,19
@@
static int bgp_handle_input(struct bgp_peer *peer)
return 0;
}
return 0;
}
- if ((
peer->
hold = ntohs(data.hold_time)) < 3)
+ if ((hold = ntohs(data.hold_time)) < 3)
{
LOG(1, 0, 0, 0, "Bad hold time (%d) from BGP peer %s\n",
{
LOG(1, 0, 0, 0, "Bad hold time (%d) from BGP peer %s\n",
-
peer->
hold, peer->name);
+ hold, peer->name);
bgp_send_notification(peer, BGP_ERR_OPEN, BGP_ERR_OPN_HOLD_TIME);
return 0;
}
bgp_send_notification(peer, BGP_ERR_OPEN, BGP_ERR_OPN_HOLD_TIME);
return 0;
}
+ /* pick lowest hold time */
+ if (hold < peer->hold)
+ peer->hold = hold;
+
/* adjust our keepalive based on negotiated hold value */
if (peer->keepalive * 3 > peer->hold)
peer->keepalive = peer->hold / 3;
/* adjust our keepalive based on negotiated hold value */
if (peer->keepalive * 3 > peer->hold)
peer->keepalive = peer->hold / 3;