From de769e24c01ff0c4aa573d9b4cec833dcae182d2 Mon Sep 17 00:00:00 2001 From: Ondrej Filip Date: Thu, 30 Mar 2000 20:00:42 +0000 Subject: Skeleton structures and files added. --- proto/ospf/lsack.c | 39 +++++++++++++++++++++++++++++++++++++++ proto/ospf/lsack.h | 17 +++++++++++++++++ proto/ospf/lsreq.c | 8 ++++++-- proto/ospf/lsupd.c | 39 +++++++++++++++++++++++++++++++++++++++ proto/ospf/lsupd.h | 17 +++++++++++++++++ proto/ospf/ospf.h | 10 ++++++++++ 6 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 proto/ospf/lsack.c create mode 100644 proto/ospf/lsack.h create mode 100644 proto/ospf/lsupd.c create mode 100644 proto/ospf/lsupd.h diff --git a/proto/ospf/lsack.c b/proto/ospf/lsack.c new file mode 100644 index 00000000..5870809b --- /dev/null +++ b/proto/ospf/lsack.c @@ -0,0 +1,39 @@ +/* + * BIRD -- OSPF + * + * (c) 2000 Ondrej Filip + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +#include "ospf.h" + +void +ospf_lsack_tx(struct ospf_neighbor *n) +{ + /* FIXME Go on! */ +} + +void +ospf_lsack_rx(struct ospf_lsack_packet *ps, struct proto *p, + struct ospf_iface *ifa, u16 size) +{ + u32 nrid, myrid; + struct ospf_neighbor *n; + struct ospf_lsreq_header *lsh; + int length; + u8 i; + + nrid=ntohl(ps->ospf_packet.routerid); + + myrid=p->cf->global->router_id; + + if((n=find_neigh(ifa, nrid))==NULL) + { + debug("%s: Received lsack from unknown neigbor! (%u)\n", p->name, + nrid); + return ; + } + /* FIXME Go on! */ +} + diff --git a/proto/ospf/lsack.h b/proto/ospf/lsack.h new file mode 100644 index 00000000..ed0ea21d --- /dev/null +++ b/proto/ospf/lsack.h @@ -0,0 +1,17 @@ +/* + * BIRD -- OSPF + * + * (c) 2000 Ondrej Filip + * + * Can be freely distributed and used under the terms of the GNU GPL. + * + */ + +#ifndef _BIRD_OSPF_LSACK_H_ +#define _BIRD_OSPF_LSACK_H_ + +void ospf_lsack_tx(struct ospf_neighbor *n); +void ospf_lsack_rx(struct ospf_lsack_packet *ps, struct proto *p, + struct ospf_iface *ifa, u16 size); + +#endif /* _BIRD_OSPF_LSACK_H_ */ diff --git a/proto/ospf/lsreq.c b/proto/ospf/lsreq.c index 5aa59f59..91bc9884 100644 --- a/proto/ospf/lsreq.c +++ b/proto/ospf/lsreq.c @@ -86,7 +86,7 @@ ospf_lsreq_rx(struct ospf_lsreq_packet *ps, struct proto *p, if((n=find_neigh(ifa, nrid))==NULL) { - debug("%s: Received dbdes from unknown neigbor! (%u)\n", p->name, + debug("%s: Received lsreq from unknown neigbor! (%u)\n", p->name, nrid); return ; } @@ -99,8 +99,12 @@ ospf_lsreq_rx(struct ospf_lsreq_packet *ps, struct proto *p, { DBG("Processing LSA: ID=%u, Type=%u, Router=%u\n", lsh->id, lsh->type, lsh->rt); + if(ospf_hash_find(n->ifa->oa->gr, lsh->id, lsh->rt, lsh->type)==NULL) + { + ospf_neigh_sm(n,INM_BADLSREQ); + return; + } /* FIXME Go on */ } - } diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c new file mode 100644 index 00000000..5f533113 --- /dev/null +++ b/proto/ospf/lsupd.c @@ -0,0 +1,39 @@ +/* + * BIRD -- OSPF + * + * (c) 2000 Ondrej Filip + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +#include "ospf.h" + +void +ospf_lsupd_tx(struct ospf_neighbor *n) +{ + /* FIXME Go on! */ +} + +void +ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p, + struct ospf_iface *ifa, u16 size) +{ + u32 nrid, myrid; + struct ospf_neighbor *n; + struct ospf_lsreq_header *lsh; + int length; + u8 i; + + nrid=ntohl(ps->ospf_packet.routerid); + + myrid=p->cf->global->router_id; + + if((n=find_neigh(ifa, nrid))==NULL) + { + debug("%s: Received lsupd from unknown neigbor! (%u)\n", p->name, + nrid); + return ; + } + /* FIXME Go on! */ +} + diff --git a/proto/ospf/lsupd.h b/proto/ospf/lsupd.h new file mode 100644 index 00000000..1aee1dce --- /dev/null +++ b/proto/ospf/lsupd.h @@ -0,0 +1,17 @@ +/* + * BIRD -- OSPF + * + * (c) 2000 Ondrej Filip + * + * Can be freely distributed and used under the terms of the GNU GPL. + * + */ + +#ifndef _BIRD_OSPF_LSUPD_H_ +#define _BIRD_OSPF_LSUPD_H_ + +void ospf_lsupd_tx(struct ospf_neighbor *n); +void ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p, + struct ospf_iface *ifa, u16 size); + +#endif /* _BIRD_OSPF_LSUPD_H_ */ diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index 283ccc9a..bc37fc48 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -246,6 +246,16 @@ struct ospf_lsreq_header { u32 rt; /* Advertising router */ }; +struct ospf_lsupd_packet { + struct ospf_packet ospf_packet; + u32 lsano; /* Number of LSA's */ +}; + +struct ospf_lsack_packet { + struct ospf_packet ospf_packet; +}; + + struct ospf_neighbor { node n; -- cgit v1.2.3