summaryrefslogtreecommitdiffstats
path: root/proto/ospf
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2010-03-11 18:55:59 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2010-03-11 18:55:59 +0100
commit54305181f6ee3af57dd3d15d53ea2e851b36ed23 (patch)
treea5aed631b68df033cba372f841d47a0cba5d7021 /proto/ospf
parente7b76b976084006e430543f4b872f624326dbfe6 (diff)
parentafa9f66c27e2f96b92059131def53cc7b2497705 (diff)
downloadbird-54305181f6ee3af57dd3d15d53ea2e851b36ed23.tar
bird-54305181f6ee3af57dd3d15d53ea2e851b36ed23.zip
Merge branch 'new' into socket2
Diffstat (limited to 'proto/ospf')
-rw-r--r--proto/ospf/hello.c12
-rw-r--r--proto/ospf/lsalib.c15
-rw-r--r--proto/ospf/lsalib.h4
-rw-r--r--proto/ospf/lsupd.c9
-rw-r--r--proto/ospf/neighbor.c3
-rw-r--r--proto/ospf/ospf.c29
-rw-r--r--proto/ospf/ospf.h5
-rw-r--r--proto/ospf/packet.c3
-rw-r--r--proto/ospf/rt.c12
-rw-r--r--proto/ospf/topology.c11
10 files changed, 46 insertions, 57 deletions
diff --git a/proto/ospf/hello.c b/proto/ospf/hello.c
index 9f174df..7fe8280 100644
--- a/proto/ospf/hello.c
+++ b/proto/ospf/hello.c
@@ -48,8 +48,8 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
struct proto_ospf *po = ifa->oa->po;
struct proto *p = &po->proto;
char *beg = "OSPF: Bad HELLO packet from ";
- unsigned int size, i, twoway, oldpriority, eligible, peers;
- u32 olddr, oldbdr, oldiface_id, tmp;
+ unsigned int size, i, twoway, eligible, peers;
+ u32 tmp;
u32 *pnrid;
size = ntohs(ps_i->length);
@@ -169,11 +169,11 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
if (!twoway)
ospf_neigh_sm(n, INM_1WAYREC);
- olddr = n->dr;
- oldbdr = n->bdr;
- oldpriority = n->priority;
+ u32 olddr = n->dr;
+ u32 oldbdr = n->bdr;
+ u32 oldpriority = n->priority;
#ifdef OSPFv3
- oldiface_id = n->iface_id;
+ u32 oldiface_id = n->iface_id;
#endif
n->dr = ntohl(ps->dr);
diff --git a/proto/ospf/lsalib.c b/proto/ospf/lsalib.c
index ab63398..35f02dc 100644
--- a/proto/ospf/lsalib.c
+++ b/proto/ospf/lsalib.c
@@ -122,22 +122,22 @@ ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h)
}
void
-htonlsab(void *h, void *n, u16 type, u16 len)
+htonlsab(void *h, void *n, u16 len)
{
u32 *hid = h;
u32 *nid = n;
- int i;
+ unsigned i;
for (i = 0; i < (len / sizeof(u32)); i++)
nid[i] = htonl(hid[i]);
}
void
-ntohlsab(void *n, void *h, u16 type, u16 len)
+ntohlsab(void *n, void *h, u16 len)
{
u32 *nid = n;
u32 *hid = h;
- int i;
+ unsigned i;
for (i = 0; i < (len / sizeof(u32)); i++)
hid[i] = ntohl(nid[i]);
@@ -185,11 +185,10 @@ void
lsasum_calculate(struct ospf_lsa_header *h, void *body)
{
u16 length = h->length;
- u16 type = h->type;
// log(L_WARN "Checksum %R %R %d start (len %d)", h->id, h->rt, h->type, length);
htonlsah(h, h);
- htonlsab(body, body, type, length - sizeof(struct ospf_lsa_header));
+ htonlsab(body, body, length - sizeof(struct ospf_lsa_header));
/*
char buf[1024];
@@ -203,7 +202,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body)
// log(L_WARN "Checksum result %4x", h->checksum);
ntohlsah(h, h);
- ntohlsab(body, body, type, length - sizeof(struct ospf_lsa_header));
+ ntohlsab(body, body, length - sizeof(struct ospf_lsa_header));
}
/*
@@ -325,7 +324,7 @@ lsa_validate_rt(struct ospf_lsa_header *lsa, struct ospf_lsa_rt *body)
}
static int
-lsa_validate_net(struct ospf_lsa_header *lsa, struct ospf_lsa_net *body)
+lsa_validate_net(struct ospf_lsa_header *lsa, struct ospf_lsa_net *body UNUSED)
{
if (lsa->length < (HDRLEN + sizeof(struct ospf_lsa_net)))
return 0;
diff --git a/proto/ospf/lsalib.h b/proto/ospf/lsalib.h
index ed929be..a799de3 100644
--- a/proto/ospf/lsalib.h
+++ b/proto/ospf/lsalib.h
@@ -12,8 +12,8 @@
void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n);
void ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h);
-void htonlsab(void *h, void *n, u16 type, u16 len);
-void ntohlsab(void *n, void *h, u16 type, u16 len);
+void htonlsab(void *h, void *n, u16 len);
+void ntohlsab(void *n, void *h, u16 len);
void lsasum_calculate(struct ospf_lsa_header *header, void *body);
u16 lsasum_check(struct ospf_lsa_header *h, void *body);
#define CMP_NEWER 1
diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c
index 39d91b9..7d5d89d 100644
--- a/proto/ospf/lsupd.c
+++ b/proto/ospf/lsupd.c
@@ -290,8 +290,7 @@ ospf_lsupd_flood(struct proto_ospf *po,
htonlsah(hh, lh);
help = (u8 *) (lh + 1);
en = ospf_hash_find_header(po->gr, domain, hh);
- htonlsab(en->lsa_body, help, hh->type, hh->length
- - sizeof(struct ospf_lsa_header));
+ htonlsab(en->lsa_body, help, hh->length - sizeof(struct ospf_lsa_header));
}
len = sizeof(struct ospf_lsupd_packet) + ntohs(lh->length);
@@ -384,8 +383,7 @@ ospf_lsupd_send_list(struct ospf_neighbor *n, list * l)
}
htonlsah(&(en->lsa), pktpos);
pktpos = pktpos + sizeof(struct ospf_lsa_header);
- htonlsab(en->lsa_body, pktpos, en->lsa.type, en->lsa.length
- - sizeof(struct ospf_lsa_header));
+ htonlsab(en->lsa_body, pktpos, en->lsa.length - sizeof(struct ospf_lsa_header));
pktpos = pktpos + en->lsa.length - sizeof(struct ospf_lsa_header);
len += en->lsa.length;
lsano++;
@@ -627,8 +625,7 @@ ospf_lsupd_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
/* pg 144 (5d) */
void *body = mb_alloc(p->pool, lsatmp.length - sizeof(struct ospf_lsa_header));
- ntohlsab(lsa + 1, body, lsatmp.type,
- lsatmp.length - sizeof(struct ospf_lsa_header));
+ ntohlsab(lsa + 1, body, lsatmp.length - sizeof(struct ospf_lsa_header));
/* We will do validation check after flooding and
acknowledging given LSA to minimize problems
diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c
index 89acf54..69c5880 100644
--- a/proto/ospf/neighbor.c
+++ b/proto/ospf/neighbor.c
@@ -440,7 +440,6 @@ void
bdr_election(struct ospf_iface *ifa)
{
struct proto_ospf *po = ifa->oa->po;
- struct proto *p = &po->proto;
u32 myid = po->router_id;
struct ospf_neighbor *neigh, *ndr, *nbdr, me;
int doadj;
@@ -631,7 +630,7 @@ static void
rxmt_timer_hook(timer * timer)
{
struct ospf_neighbor *n = (struct ospf_neighbor *) timer->data;
- struct proto *p = &n->ifa->oa->po->proto;
+ // struct proto *p = &n->ifa->oa->po->proto;
struct top_hash_entry *en;
DBG("%s: RXMT timer fired on interface %s for neigh: %I.\n",
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index ff010cb..e2a3aed 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -78,7 +78,7 @@
static int ospf_reload_routes(struct proto *p);
-static void ospf_rt_notify(struct proto *p, net * n, rte * new, rte * old UNUSED, ea_list * attrs);
+static void ospf_rt_notify(struct proto *p, struct rtable *table UNUSED, net * n, rte * new, rte * old UNUSED, ea_list * attrs);
static void ospf_ifa_notify(struct proto *p, unsigned flags, struct ifa *a);
static int ospf_rte_better(struct rte *new, struct rte *old);
static int ospf_rte_same(struct rte *new, struct rte *old);
@@ -224,9 +224,11 @@ ospf_dump(struct proto *p)
}
}
+ /*
OSPF_TRACE(D_EVENTS, "LSA graph dump start:");
ospf_top_dump(po->gr, p);
OSPF_TRACE(D_EVENTS, "LSA graph dump finished");
+ */
neigh_dump_all();
}
@@ -486,8 +488,7 @@ ospf_shutdown(struct proto *p)
}
static void
-ospf_rt_notify(struct proto *p, net * n, rte * new, rte * old UNUSED,
- ea_list * attrs)
+ospf_rt_notify(struct proto *p, rtable *tbl UNUSED, net * n, rte * new, rte * old UNUSED, ea_list * attrs)
{
struct proto_ospf *po = (struct proto_ospf *) p;
@@ -503,7 +504,7 @@ ospf_rt_notify(struct proto *p, net * n, rte * new, rte * old UNUSED,
}
static void
-ospf_ifa_notify(struct proto *p, unsigned flags, struct ifa *a)
+ospf_ifa_notify(struct proto *p, unsigned flags UNUSED, struct ifa *a)
{
struct proto_ospf *po = (struct proto_ospf *) p;
struct ospf_iface *ifa;
@@ -918,7 +919,7 @@ ospf_reconfigure(struct proto *p, struct proto_config *c)
void
ospf_sh_neigh(struct proto *p, char *iff)
{
- struct ospf_iface *ifa = NULL, *f;
+ struct ospf_iface *ifa = NULL;
struct ospf_neighbor *n;
struct proto_ospf *po = (struct proto_ospf *) p;
@@ -1009,7 +1010,7 @@ void
ospf_sh_iface(struct proto *p, char *iff)
{
struct proto_ospf *po = (struct proto_ospf *) p;
- struct ospf_iface *ifa = NULL, *f;
+ struct ospf_iface *ifa = NULL;
if (p->proto_state != PS_UP)
{
@@ -1196,7 +1197,6 @@ show_lsa_network(struct top_hash_entry *he)
static inline void
show_lsa_sum_net(struct top_hash_entry *he)
{
- struct ospf_lsa_header *lsa = &(he->lsa);
ip_addr ip;
int pxlen;
@@ -1236,9 +1236,7 @@ show_lsa_sum_rt(struct top_hash_entry *he)
static inline void
show_lsa_external(struct top_hash_entry *he)
{
- struct ospf_lsa_header *lsa = &(he->lsa);
struct ospf_lsa_ext *ext = he->lsa_body;
- struct ospf_lsa_ext_tos *et = (struct ospf_lsa_ext_tos *) (ext + 1);
char str_via[STD_ADDRESS_P_LENGTH + 8] = "";
char str_tag[16] = "";
ip_addr ip, rt_fwaddr;
@@ -1248,7 +1246,7 @@ show_lsa_external(struct top_hash_entry *he)
rt_metric = ext->metric & METRIC_MASK;
ebit = ext->metric & LSA_EXT_EBIT;
#ifdef OSPFv2
- ip = ipa_and(ipa_from_u32(lsa->id), ext->netmask);
+ ip = ipa_and(ipa_from_u32(he->lsa.id), ext->netmask);
pxlen = ipa_mklen(ext->netmask);
rt_fwaddr = ext->fwaddr;
rt_fwaddr_valid = !ipa_equal(rt_fwaddr, IPA_NONE);
@@ -1285,10 +1283,7 @@ show_lsa_external(struct top_hash_entry *he)
static inline void
show_lsa_prefix(struct top_hash_entry *he, struct ospf_lsa_header *olsa)
{
- struct ospf_lsa_header *lsa = &(he->lsa);
struct ospf_lsa_prefix *px = he->lsa_body;
- struct ospf_lsa_ext *ext = he->lsa_body;
- char *msg;
ip_addr pxa;
int pxlen;
u8 pxopts;
@@ -1496,8 +1491,6 @@ ospf_sh_lsadb(struct proto *p)
if ((dscope != last_dscope) || (hea[i]->domain != last_domain))
{
- struct iface *ifa;
-
cli_msg(-1017, "");
switch (dscope)
{
@@ -1509,8 +1502,10 @@ ospf_sh_lsadb(struct proto *p)
break;
#ifdef OSPFv3
case LSA_SCOPE_LINK:
- ifa = if_find_by_index(hea[i]->domain);
- cli_msg(-1017, "Link %s", (ifa != NULL) ? ifa->name : "?");
+ {
+ struct iface *ifa = if_find_by_index(hea[i]->domain);
+ cli_msg(-1017, "Link %s", (ifa != NULL) ? ifa->name : "?");
+ }
break;
#endif
}
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index 7d5ae28..cb4f53c 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -705,7 +705,7 @@ struct ospf_area
struct top_hash_entry *pxr_lsa; /* Originated prefix LSA */
list cand; /* List of candidates for RT calc. */
struct fib net_fib; /* Networks to advertise or not */
- int stub;
+ unsigned stub;
int trcap; /* Transit capability? */
u32 options; /* Optional features */
struct proto_ospf *po;
@@ -782,13 +782,14 @@ void schedule_net_lsa(struct ospf_iface *ifa);
#ifdef OSPFv3
void schedule_link_lsa(struct ospf_iface *ifa);
#else
-static inline void schedule_link_lsa(struct ospf_iface *ifa) {}
+static inline void schedule_link_lsa(struct ospf_iface *ifa UNUSED) {}
#endif
void ospf_sh_neigh(struct proto *p, char *iff);
void ospf_sh(struct proto *p);
void ospf_sh_iface(struct proto *p, char *iff);
void ospf_sh_state(struct proto *p, int verbose);
+void ospf_sh_lsadb(struct proto *p);
#define EA_OSPF_METRIC1 EA_CODE(EAP_OSPF, 0)
diff --git a/proto/ospf/packet.c b/proto/ospf/packet.c
index 6697057..95f7653 100644
--- a/proto/ospf/packet.c
+++ b/proto/ospf/packet.c
@@ -14,7 +14,6 @@ void
ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type)
{
struct proto_ospf *po = ifa->oa->po;
- struct proto *p = &po->proto;
struct ospf_packet *pkt;
pkt = (struct ospf_packet *) buf;
@@ -282,7 +281,7 @@ ospf_rx_hook(sock *sk, int size)
/* Initially, the packet is associated with the 'master' iface */
struct ospf_iface *ifa = sk->data;
struct proto_ospf *po = ifa->oa->po;
- struct proto *p = &po->proto;
+ // struct proto *p = &po->proto;
int src_local = ifa_match_addr(ifa->addr, sk->faddr);
int dst_local = ipa_equal(sk->laddr, ifa->addr->ip);
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index 18dc3bb..9a330a8 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -170,7 +170,7 @@ static void
process_prefixes(struct ospf_area *oa)
{
struct proto_ospf *po = oa->po;
- struct proto *p = &po->proto;
+ // struct proto *p = &po->proto;
struct top_hash_entry *en, *src;
struct ospf_lsa_prefix *px;
ip_addr pxa;
@@ -226,9 +226,8 @@ process_prefixes(struct ospf_area *oa)
static void
ospf_rt_spfa_rtlinks(struct ospf_area *oa, struct top_hash_entry *act, struct top_hash_entry *en)
{
- struct proto *p = &oa->po->proto;
+ // struct proto *p = &oa->po->proto;
struct proto_ospf *po = oa->po;
- orta nf;
u32 i;
struct ospf_lsa_rt *rt = en->lsa_body;
@@ -249,6 +248,7 @@ ospf_rt_spfa_rtlinks(struct ospf_area *oa, struct top_hash_entry *act, struct to
*/
DBG("\n");
+ orta nf;
nf.type = RTS_OSPF;
nf.options = 0;
nf.metric1 = act->dist + rtl->metric;
@@ -521,7 +521,7 @@ link_back(struct ospf_area *oa, struct top_hash_entry *en, struct top_hash_entry
static void
ospf_rt_sum_tr(struct ospf_area *oa)
{
- struct proto *p = &oa->po->proto;
+ // struct proto *p = &oa->po->proto;
struct proto_ospf *po = oa->po;
struct ospf_area *bb = po->backbone;
ip_addr ip, abrip;
@@ -573,7 +573,7 @@ ospf_rt_sum_tr(struct ospf_area *oa)
type = ORT_NET;
re = fib_find(&po->rtf, &ip, pxlen);
}
- else if (en->lsa.type == LSA_T_SUM_RT)
+ else // en->lsa.type == LSA_T_SUM_RT
{
#ifdef OSPFv2
struct ospf_lsa_sum *ls = en->lsa_body;
@@ -1081,8 +1081,8 @@ static int
calc_next_hop(struct ospf_area *oa, struct top_hash_entry *en,
struct top_hash_entry *par)
{
+ // struct proto *p = &oa->po->proto;
struct ospf_neighbor *neigh;
- struct proto *p = &oa->po->proto;
struct proto_ospf *po = oa->po;
struct ospf_iface *ifa;
diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c
index b09d13f..bff9b2e 100644
--- a/proto/ospf/topology.c
+++ b/proto/ospf/topology.c
@@ -741,7 +741,7 @@ originate_sum_net_lsa(struct ospf_area *oa, struct fib_node *fn, int metric)
}
void
-originate_sum_rt_lsa(struct ospf_area *oa, struct fib_node *fn, int metric, u32 options)
+originate_sum_rt_lsa(struct ospf_area *oa, struct fib_node *fn, int metric, u32 options UNUSED)
{
struct proto_ospf *po = oa->po;
struct proto *p = &po->proto;
@@ -897,7 +897,6 @@ originate_ext_lsa_body(net *n, rte *e, u16 *length, struct proto_ospf *po,
u32 tag = ea_get_int(attrs, EA_OSPF_TAG, 0);
int gw = 0;
int size = sizeof(struct ospf_lsa_ext);
- u32 *buf;
if ((e->attrs->dest == RTD_ROUTER) &&
!ipa_equal(e->attrs->gw, IPA_NONE) &&
@@ -925,7 +924,7 @@ originate_ext_lsa_body(net *n, rte *e, u16 *length, struct proto_ospf *po,
ext->fwaddr = gw ? e->attrs->gw : IPA_NONE;
ext->tag = tag;
#else /* OSPFv3 */
- buf = ext->rest;
+ u32 *buf = ext->rest;
buf = put_ipv6_prefix(buf, n->n.prefix, n->n.pxlen, 0, 0);
if (gw)
@@ -1015,7 +1014,6 @@ flush_ext_lsa(net *n, struct proto_ospf *po)
{
struct proto *p = &po->proto;
struct fib_node *fn = &n->n;
- struct ospf_area *oa;
struct top_hash_entry *en;
OSPF_TRACE(D_EVENTS, "Flushing AS-external-LSA for %I/%d",
@@ -1649,10 +1647,11 @@ ospf_hash_delete(struct top_graph *f, struct top_hash_entry *e)
bug("ospf_hash_delete() called for invalid node");
}
+/*
static void
ospf_dump_lsa(struct top_hash_entry *he, struct proto *p)
{
- /*
+
struct ospf_lsa_rt *rt = NULL;
struct ospf_lsa_rt_link *rr = NULL;
struct ospf_lsa_net *ln = NULL;
@@ -1686,7 +1685,6 @@ ospf_dump_lsa(struct top_hash_entry *he, struct proto *p)
default:
break;
}
- */
}
void
@@ -1702,6 +1700,7 @@ ospf_top_dump(struct top_graph *f, struct proto *p)
ospf_dump_lsa(e, p);
}
}
+*/
/* This is very inefficient, please don't call it often */