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
-~----------~----~----~----~------~----~------~--~---

Reply via email to