Better logging output. Added 'struct proto *' info 'struct ospf iface'.

This commit is contained in:
Ondrej Filip 1999-05-11 09:50:02 +00:00
parent 1a54d44a23
commit f7103dfcfe
2 changed files with 61 additions and 22 deletions

View file

@ -25,7 +25,14 @@
int
ospf_rx_hook(sock *sk, int size)
{
DBG(" OSPF: RX_Hook called on interface ");
struct ospf_iface *ifa;
struct proto *p;
ifa=(struct ospf_iface *)(sk->data);
p=(struct proto *)(ifa->proto);
DBG(p->name);
DBG(": RX_Hook called on interface ");
DBG(sk->iface->name);
DBG(".\n");
return(1);
@ -34,7 +41,14 @@ ospf_rx_hook(sock *sk, int size)
void
ospf_tx_hook(sock *sk)
{
DBG(" OSPF: TX_Hook called on interface ");
struct ospf_iface *ifa;
struct proto *p;
ifa=(struct ospf_iface *)(sk->data);
p=(struct proto *)(ifa->proto);
DBG(p->name);
DBG(": TX_Hook called on interface ");
DBG(sk->iface->name);
DBG(".\n");
}
@ -42,7 +56,14 @@ ospf_tx_hook(sock *sk)
void
ospf_err_hook(sock *sk, int err)
{
DBG(" OSPF: Err_Hook called on interface ");
struct ospf_iface *ifa;
struct proto *p;
ifa=(struct ospf_iface *)(sk->data);
p=(struct proto *)(ifa->proto);
DBG(p->name);
DBG(": Err_Hook called on interface ");
DBG(sk->iface->name);
DBG(".\n");
}
@ -69,12 +90,15 @@ ospf_open_socket(struct proto *p, struct ospf_iface *ifa)
mcsk->iface=ifa->iface;
mcsk->rbsize=ifa->iface->mtu;
mcsk->tbsize=ifa->iface->mtu;
mcsk->data=(void *)ifa;
if(sk_open(mcsk)!=0)
{
DBG(" OSPF: SK_OPEN: failed\n");
DBG(p->name);
DBG(": SK_OPEN: failed\n");
return(NULL);
}
DBG(" OSPF: SK_OPEN: open\n");
DBG(p->name);
DBG(": SK_OPEN: open\n");
return(mcsk);
}
else return(NULL);
@ -119,32 +143,39 @@ void
hello_timer_hook(timer *timer)
{
struct ospf_iface *ifa;
struct proto *p;
ifa=(struct ospf_iface *)timer->data;
debug(" OSPF: Hello timer fired on interface %s.\n",
ifa->iface->name);
p=(struct proto *)(ifa->proto);
debug("%s: Hello timer fired on interface %s.\n",
p->name, ifa->iface->name);
}
void
add_hello_timer(struct ospf_iface *ifa)
{
struct proto *p;
p=(struct proto *)(ifa->proto);
if(ifa->helloint==0) ifa->helloint=HELLOINT_D;
ifa->timer->hook=hello_timer_hook;
ifa->timer->recurrent=ifa->helloint;
ifa->timer->expires=0;
tm_start(ifa->timer,0);
DBG(" OSPF: Installing hello timer.\n");
DBG("%s: Installing hello timer.\n", p->name);
}
void
wait_timer_hook(timer *timer)
{
struct ospf_iface *ifa;
struct proto *p;
ifa=(struct ospf_iface *)timer->data;
debug(" OSPF: Wait timer fired on interface %s.\n",
ifa->iface->name);
p=(struct proto *)(ifa->proto);
debug("%s: Wait timer fired on interface %s.\n",
p->name, ifa->iface->name);
if(ifa->state=OSPF_IS_WAITING)
{
/*
@ -153,14 +184,15 @@ wait_timer_hook(timer *timer)
*/
if(ifa->priority!=0)
{
debug(" OSPF: Changing state into DR.\n");
debug("%s: Changing state into DR.\n", p->name);
ifa->state=OSPF_IS_DR;
ifa->drip=ifa->iface->addr->ip;
/* FIXME: Set ifa->drid */
}
else
{
debug(" OSPF: Changing state into DROTHER.\n");
debug("%s: Changing state into DROTHER.\n",p->name);
ifa->state=OSPF_IS_DROTHER;
}
add_hello_timer(ifa);
@ -168,8 +200,11 @@ wait_timer_hook(timer *timer)
}
void
add_wait_timer(struct ospf_iface *ifa,pool *pool, int wait)
add_wait_timer(struct ospf_iface *ifa, pool *pool, int wait)
{
struct proto *p;
p=(struct proto *)(ifa->proto);
ifa->timer=tm_new(pool);
ifa->timer->data=ifa;
ifa->timer->randomize=1;
@ -179,7 +214,8 @@ add_wait_timer(struct ospf_iface *ifa,pool *pool, int wait)
ifa->timer->recurrent=0;
ifa->timer->expires=0;
tm_start(ifa->timer,(wait!=0 ? wait : WAIT_D));
DBG(" OSPF: Installing wait timer.\n");
DBG(p->name);
DBG(": Installing wait timer.\n");
}
else
{
@ -239,6 +275,7 @@ ospf_if_notify(struct proto *p, unsigned flags, struct iface *iface)
debug(" OSPF: using interface %s.\n", iface->name);
/* FIXME: Latter I'll use config - this is incorrect */
ifa=mb_alloc(p->pool, sizeof(struct ospf_iface));
ifa->proto=(struct proto_ospf *)p;
ifa->iface=iface;
add_tail(&((struct proto_ospf *)p)->iface_list, NODE ifa);
ospf_iface_default(ifa);
@ -274,7 +311,8 @@ ospf_if_notify(struct proto *p, unsigned flags, struct iface *iface)
static int
ospf_start(struct proto *p)
{
DBG(" OSPF: Start\n");
DBG(p->name);
DBG(": Start\n");
p->if_notify=ospf_if_notify;
@ -287,7 +325,8 @@ ospf_dump(struct proto *p)
char areastr[20];
struct ospf_config *c = (void *) p->cf;
DBG(" OSPF: Dump.\n");
DBG(p->name);
DBG(": Dump.\n");
debug(" -AreaID: %d\n", c->area );
}

View file

@ -17,6 +17,10 @@
#error Multicast address not defined in IPv6
#endif
struct proto_ospf {
struct proto proto;
list iface_list; /* Interfaces we really use */
};
struct ospf_config {
struct proto_config c;
@ -26,6 +30,7 @@ struct ospf_config {
struct ospf_iface {
node n;
struct proto_ospf *proto;
struct iface *iface; /* Nest's iface */
list sk_list; /* List of active sockets */
u32 area; /* OSPF Area */
@ -63,7 +68,7 @@ struct ospf_iface {
#define PRIORITY_D 1
#define HELLOINT_D 10
#define DEADINT_D 4
#define WAIT_D 40 /* Value of Wait timer - I didn't found it in RFC */
#define WAIT_D 20 /* Value of Wait timer - I didn't found it in RFC */
};
@ -79,9 +84,4 @@ struct ospf_patt {
byte mode;
};
struct proto_ospf {
struct proto proto;
list iface_list; /* Interfaces we really use */
};
#endif /* _BIRD_OSPF_H_ */