summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto/ospf/hello.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/proto/ospf/hello.c b/proto/ospf/hello.c
index 0cdaab73..aa454f51 100644
--- a/proto/ospf/hello.c
+++ b/proto/ospf/hello.c
@@ -54,16 +54,19 @@ ospf_hello_rx(struct ospf_hello_packet *ps, struct proto *p,
struct ospf_neighbor *neigh,*n;
u8 i,twoway,oldpriority;
ip_addr olddr,oldbdr;
+ ip_addr mask;
char *beg=": Bad OSPF hello packet from ", *rec=" received: ";
nrid=ntohl(((struct ospf_packet *)ps)->routerid);
OSPF_TRACE(D_PACKETS, "Received hello from %I via %s",faddr,ifa->iface->name);
+ mask=ps->netmask;
+ ipa_ntoh(mask);
- if((unsigned)ipa_mklen(ipa_ntoh(ps->netmask))!=ifa->iface->addr->pxlen)
+ if((unsigned)ipa_mklen(mask)!=ifa->iface->addr->pxlen)
{
log("%s%s%I%s%Ibad netmask %I.", p->name, beg, nrid, rec,
- ipa_ntoh(ps->netmask));
+ mask);
return;
}
@@ -93,8 +96,10 @@ ospf_hello_rx(struct ospf_hello_packet *ps, struct proto *p,
add_tail(&ifa->neigh_list, NODE n);
n->rid=nrid;
n->ip=faddr;
- n->dr=ipa_ntoh(ps->dr);
- n->bdr=ipa_ntoh(ps->bdr);
+ n->dr=ps->dr;
+ ipa_ntoh(n->dr);
+ n->bdr=ps->bdr;
+ ipa_ntoh(n->bdr);
n->priority=ps->priority;
n->options=ps->options;
n->ifa=ifa;
@@ -213,8 +218,10 @@ hello_timer_hook(timer *timer)
pkt->options=ifa->options;
pkt->priority=ifa->priority;
pkt->deadint=htonl(ifa->deadc*ifa->helloint);
- pkt->dr=ipa_hton(ifa->drip);
- pkt->bdr=ipa_hton(ifa->bdrip);
+ pkt->dr=ifa->drip;
+ ipa_hton(pkt->dr);
+ pkt->bdr=ifa->bdrip;
+ ipa_hton(pkt->bdr);
/* Fill all neighbors */
i=0;