Author: adrian.chadd
Date: Mon Feb 23 07:18:38 2009
New Revision: 13854
Modified:
playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_conn.c
playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.c
playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.h
Log:
* Improve debugging of BGP stuff a bit more, so I can track when BGP goes
up/down
* flesh out a best-match AS lookup function
Modified: playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_conn.c
==============================================================================
--- playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_conn.c (original)
+++ playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_conn.c Mon Feb 23 07:18:38 2009
@@ -101,6 +101,7 @@
void
bgp_conn_destroy(bgp_conn_t *bc)
{
+ debug(85, 1) ("bgp_conn_destroy: %p: shutting down BGP session\n", bc);
eventDelete(bgp_conn_connect_wakeup, bc);
if (bc->fd > -1) {
comm_close(bc->fd);
@@ -197,7 +198,7 @@
bc->fd = -1;
}
- debug(85, 2) ("bgp_conn_begin_connect: %p: beginning connect to
%s:%d\n",
bc, inet_ntoa(bc->rem_ip), bc->rem_port);
+ debug(85, 1) ("bgp_conn_begin_connect: %p: beginning connect to
%s:%d\n",
bc, inet_ntoa(bc->rem_ip), bc->rem_port);
bc->fd = comm_open(SOCK_STREAM, IPPROTO_TCP, bc->bi.lcl.bgp_id, 0,
COMM_NONBLOCKING, COMM_TOS_DEFAULT, "BGP connection");
assert(bc->fd > 0);
Modified: playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.c
==============================================================================
--- playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.c (original)
+++ playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.c Mon Feb 23 07:18:38 2009
@@ -36,6 +36,28 @@
}
int
+bgp_rib_match_host(bgp_rib_head_t *head, struct in_addr addr)
+{
+ prefix_t * p;
+ radix_node_t *n;
+ bgp_rib_aspath_t *a;
+
+ p = New_Prefix(AF_INET, &addr, 32, NULL);
+
+ n = radix_search_best(head->rh, p);
+ if (n == NULL) {
+ debug(85, 3) ("bgp_rib_match_host: %s: no match\n",
inet_ntoa(addr));
+ Deref_Prefix(p);
+ return -1;
+ }
+ debug(85, 3) ("bgp_rib_match_host: %s: match; AS %d\n",
inet_ntoa(addr),
bgp_rib_getasn(n->data));
+ Deref_Prefix(p);
+ a = n->data;
+ return a->origin_as;
+}
+
+
+int
bgp_rib_match_net(bgp_rib_head_t *head, struct in_addr addr, int masklen)
{
prefix_t * p;
@@ -46,11 +68,11 @@
n = radix_search_best(head->rh, p);
if (n == NULL) {
- debug(85, 1) ("bgp_rib_match_net: %s/%d: no match\n",
inet_ntoa(addr),
masklen);
+ debug(85, 3) ("bgp_rib_match_net: %s/%d: no match\n",
inet_ntoa(addr),
masklen);
Deref_Prefix(p);
return -1;
}
- debug(85, 1) ("bgp_rib_match_net: %s/%d: match; AS %d\n",
inet_ntoa(addr), masklen, bgp_rib_getasn(n->data));
+ debug(85, 3) ("bgp_rib_match_net: %s/%d: match; AS %d\n",
inet_ntoa(addr), masklen, bgp_rib_getasn(n->data));
Deref_Prefix(p);
a = n->data;
return a->origin_as;
@@ -95,11 +117,11 @@
radix_node_t *n;
bgp_rib_aspath_t *a;
- debug(85, 1) ("bgp_rib_add_net: %s/%d; AS %d\n", inet_ntoa(addr),
masklen, origin_as);
+ debug(85, 3) ("bgp_rib_add_net: %s/%d; AS %d\n", inet_ntoa(addr),
masklen, origin_as);
p = New_Prefix(AF_INET, &addr, masklen, NULL);
n = radix_search_exact(head->rh, p);
if (n != NULL) {
- debug(85, 1) ("bgp_rib_add_net: %s/%d: removing before
re-adding\n",
inet_ntoa(addr), masklen);
+ debug(85, 3) ("bgp_rib_add_net: %s/%d: removing before
re-adding\n",
inet_ntoa(addr), masklen);
bgp_rib_clear_node(head, n);
}
@@ -120,13 +142,13 @@
prefix_t * p;
radix_node_t *n;
- debug(85, 1) ("bgp_rib_del_net: %s/%d\n", inet_ntoa(addr), masklen);
+ debug(85, 3) ("bgp_rib_del_net: %s/%d\n", inet_ntoa(addr), masklen);
p = New_Prefix(AF_INET, &addr, masklen, NULL);
n = radix_search_exact(head->rh, p);
if (n == NULL) {
- debug(85, 1) ("bgp_rib_del_net: %s/%d: NOT FOUND?!\n",
inet_ntoa(addr),
masklen);
+ debug(85, 3) ("bgp_rib_del_net: %s/%d: NOT FOUND?!\n",
inet_ntoa(addr),
masklen);
Deref_Prefix(p);
return 0;
}
Modified: playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.h
==============================================================================
--- playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.h (original)
+++ playpen/LUSCA_HEAD_bgp/libsqbgp/bgp_rib.h Mon Feb 23 07:18:38 2009
@@ -12,6 +12,7 @@
};
typedef struct _bgp_rib_aspath bgp_rib_aspath_t;
+extern int bgp_rib_match_host(bgp_rib_head_t *head, struct in_addr addr);
extern int bgp_rib_match_net(bgp_rib_head_t *head, struct in_addr addr,
int masklen);
extern int bgp_rib_add_net(bgp_rib_head_t *head, struct in_addr addr, int
masklen, u_short origin_as);
extern int bgp_rib_del_net(bgp_rib_head_t *head, struct in_addr addr, int
masklen);
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"lusca-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/lusca-commit?hl=en
-~----------~----~----~----~------~----~------~--~---