summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_packet.c
diff options
context:
space:
mode:
authorpaulo <paul@bayleaf.org.uk>2010-02-03 15:36:12 +0000
committerpaulo <paul@bayleaf.org.uk>2010-02-03 15:36:12 +0000
commit9c2e47cd3f3018aa5508cd5e7c0d60067cadddbf (patch)
tree835790e71d5158f6c19b5a6658dabf88bc433850 /bgpd/bgp_packet.c
parent4a31d29cda2641e4a1affe62086d87bc84104096 (diff)
downloadquagga-9c2e47cd3f3018aa5508cd5e7c0d60067cadddbf.tar.bz2
quagga-9c2e47cd3f3018aa5508cd5e7c0d60067cadddbf.tar.xz
Handling of peering states: Don't disable peer until session
acknowledges disable. Explicity re-enable peer after clearing, unless shutdown or prefix overflow. On HUP send send admin reset, not admin shutdown.
Diffstat (limited to 'bgpd/bgp_packet.c')
-rw-r--r--bgpd/bgp_packet.c28
1 files changed, 6 insertions, 22 deletions
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index cd36723d..f8c0f0bb 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -819,10 +819,10 @@ bgp_open_send (struct peer *peer)
}
#endif
-/* Generate notification object */
-static bgp_notify
-bgp_notification (struct peer *peer, u_char code, u_char sub_code,
- u_char *data, size_t datalen)
+/* Send BGP notify packet with data portion. */
+void
+bgp_notify_send_with_data (struct peer *peer, u_char code, u_char sub_code,
+ u_char *data, size_t datalen)
{
bgp_notify notification;
notification = bgp_notify_new(code, sub_code, datalen);
@@ -833,7 +833,7 @@ bgp_notification (struct peer *peer, u_char code, u_char sub_code,
if (BGP_DEBUG (normal, NORMAL))
zlog_debug ("%s send message type %d, length (incl. header) %d",
- peer->host, BGP_MSG_NOTIFY, notification->length);
+ peer->host, BGP_MSG_NOTIFY, notification->length);
/* peer reset cause */
if (sub_code != BGP_NOTIFY_CEASE_CONFIG_CHANGE)
@@ -846,23 +846,7 @@ bgp_notification (struct peer *peer, u_char code, u_char sub_code,
peer->last_reset = PEER_DOWN_NOTIFY_SEND;
}
- return notification;
-}
-
-/* Send BGP notify packet with data portion. Reenable peer*/
-void
-bgp_notify_send_with_data (struct peer *peer, u_char code, u_char sub_code,
- u_char *data, size_t datalen)
-{
- bgp_peer_reenable(peer, bgp_notification(peer, code, sub_code, data, datalen));
-}
-
-/* Send BGP notify packet with data portion. Disable peer*/
-void
-bgp_notify_send_with_data_disable (struct peer *peer, u_char code, u_char sub_code,
- u_char *data, size_t datalen)
-{
- bgp_peer_disable(peer, bgp_notification(peer, code, sub_code, data, datalen));
+ bgp_peer_disable(peer, notification);
}
/* Send BGP notify packet. */