Remi noticed that ospfd does no longer see new interfaces.
The priority filter should only work on routing messages that
have a rtm_priority.
So these are out:
RTM_DELADDR
RTM_NEWADDR (struct ifa_msghdr)
RTM_IFINFO (struct if_msghdr)
RTM_IFANNOUNCE (struct if_announcemsghdr)
RTM_BFD (struct bfd_msghdr)
and all others (struct rt_msghdr) are ok and handled in the default case
further down.
Move the rop_priority check there.
ok?
diff --git sys/net/rtsock.c sys/net/rtsock.c
index afab5d72505..4d3442d0924 100644
--- sys/net/rtsock.c
+++ sys/net/rtsock.c
@@ -465,9 +465,6 @@ next:
if (rtm->rtm_type != RTM_DESYNC && rop->rop_msgfilter != 0 &&
!(rop->rop_msgfilter & (1 << rtm->rtm_type)))
goto next;
- if (rop->rop_priority != 0 &&
- rop->rop_priority < rtm->rtm_priority)
- goto next;
switch (rtm->rtm_type) {
case RTM_IFANNOUNCE:
case RTM_DESYNC:
@@ -483,6 +480,9 @@ next:
goto next;
break;
default:
+ if (rop->rop_priority != 0 &&
+ rop->rop_priority < rtm->rtm_priority)
+ goto next;
/* check against rtable id */
if (rop->rop_rtableid != RTABLE_ANY &&
rop->rop_rtableid != rtm->rtm_tableid)