Time goes by and things must be cleaned. Thanks to claudio@'s work
to support multiple connected routes carp(4) now have its own default
priority. So I audited the remaining iterations on "&finet" and I
couldn't find any good reason to force carp(4) interfaces at a special
position in the list of interfaces.
OpenBSD's network stack changed in the past years and ifa_ifwithnet()
is now only used in a few places that should not matter. Maybe a
brave soul (anyone?) will even get rid of this function completely.
The other place where this order could matter is in6_ifawithscope().
But stsp@ added an explicit check for carp(4) interfaces last October.
Remember also that since 5.7 the ``carpdev'' argument is mandatory. So
you're rather unlikely to have a carp(4) interface inserted in "&ifnet"
before its parent interface.
Finally I sleep better with fewer "#if PSEUDOFROG" in the stack :)
Ok?
Index: net/if.c
===================================================================
RCS file: /cvs/src/sys/net/if.c,v
retrieving revision 1.333
diff -u -p -r1.333 if.c
--- net/if.c 20 May 2015 08:28:54 -0000 1.333
+++ net/if.c 26 May 2015 08:45:51 -0000
@@ -373,24 +373,8 @@ if_attachhead(struct ifnet *ifp)
void
if_attach(struct ifnet *ifp)
{
-#if NCARP > 0
- struct ifnet *before = NULL;
-#endif
-
if_attach_common(ifp);
-
-#if NCARP > 0
- if (ifp->if_type != IFT_CARP)
- TAILQ_FOREACH(before, &ifnet, if_list)
- if (before->if_type == IFT_CARP)
- break;
- if (before == NULL)
- TAILQ_INSERT_TAIL(&ifnet, ifp, if_list);
- else
- TAILQ_INSERT_BEFORE(before, ifp, if_list);
-#else
TAILQ_INSERT_TAIL(&ifnet, ifp, if_list);
-#endif
if_attachsetup(ifp);
}