From e29ed2adec0ef11ca1c84b40b2c98247f162f3df Mon Sep 17 00:00:00 2001 From: Chris Hall Date: Wed, 27 Jan 2010 22:37:55 +0000 Subject: Binding to interfaces and counting of messages. Wired up message counters in bgp_session structure. Added fields to session for neighbor interface and neighbor update-source -- so that these can be set when connect() is done. Peering Engine resolves any interface name to an address, so that BGP Engine doesn't have to. Reinstated as much code as necessary in bgp_network to bind to specific interfaces, as set in the session. Moved setting of bgp_nexthop_set() back into Routeing Engine. Result is that only Peering Engine talks to Zebra or uses the iflist. Wired up setting of TTL. Reworked connections locking of the session mutex so more robust if/when connections are cut loose from the session. Made peer_index entry point at connection, not session. Works better in bgp_network that way. modified: bgpd/bgp_connection.c modified: bgpd/bgp_connection.h modified: bgpd/bgp_fsm.c modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_msg_write.c modified: bgpd/bgp_network.c modified: bgpd/bgp_network.h modified: bgpd/bgp_peer.c modified: bgpd/bgp_peer.h modified: bgpd/bgp_peer_index.c modified: bgpd/bgp_peer_index.h modified: bgpd/bgp_session.c modified: bgpd/bgp_session.h modified: lib/prefix.h modified: lib/sockunion.c modified: lib/sockunion.h --- lib/sockunion.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/sockunion.h') diff --git a/lib/sockunion.h b/lib/sockunion.h index c00c02e4..ea76a955 100644 --- a/lib/sockunion.h +++ b/lib/sockunion.h @@ -25,6 +25,7 @@ #include "zebra.h" #include "symtab.h" +#include "prefix.h" #if 0 union sockunion { @@ -41,6 +42,8 @@ union sockunion { #define su_port su_si.si_port #endif /* 0 */ +typedef struct prefix* prefix ; + typedef union sockunion* sockunion ; union sockunion { @@ -120,6 +123,7 @@ extern int sockunion_getpeername (int, union sockunion*); extern union sockunion *sockunion_dup (union sockunion *); extern void sockunion_free (union sockunion *); +extern sockunion sockunion_new(prefix p) ; extern void sockunion_unset(sockunion* p_su) ; extern void sockunion_set(sockunion* p_dst, sockunion su) ; extern void sockunion_set_dup(sockunion* p_dst, sockunion su) ; -- cgit v1.2.3