summaryrefslogtreecommitdiffstats
path: root/sys/net/if_ethersubr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net/if_ethersubr.c')
-rw-r--r--sys/net/if_ethersubr.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index bbf9753..984d0bb 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -35,7 +35,6 @@
#include "opt_inet6.h"
#include "opt_ipx.h"
#include "opt_netgraph.h"
-#include "opt_carp.h"
#include "opt_mbuf_profiling.h"
#include <sys/param.h>
@@ -70,6 +69,7 @@
#include <netinet/in.h>
#include <netinet/in_var.h>
#include <netinet/if_ether.h>
+#include <netinet/ip_carp.h>
#include <netinet/ip_var.h>
#include <netinet/ip_fw.h>
#include <netinet/ipfw/ip_fw_private.h>
@@ -78,12 +78,6 @@
#include <netinet6/nd6.h>
#endif
-#if defined(INET) || defined(INET6)
-#ifdef DEV_CARP
-#include <netinet/ip_carp.h>
-#endif
-#endif
-
#ifdef IPX
#include <netipx/ipx.h>
#include <netipx/ipx_if.h>
@@ -120,6 +114,11 @@ void (*ng_ether_attach_p)(struct ifnet *ifp);
void (*ng_ether_detach_p)(struct ifnet *ifp);
void (*vlan_input_p)(struct ifnet *, struct mbuf *);
+#if defined(INET) || defined(INET6)
+int (*carp_forus_p)(struct ifnet *, u_char *);
+int (*carp_output_p)(struct ifnet *, struct mbuf *, struct sockaddr *,
+ struct rtentry *);
+#endif
/* if_bridge(4) support */
struct mbuf *(*bridge_input_p)(struct ifnet *, struct mbuf *);
@@ -399,12 +398,10 @@ ether_output(struct ifnet *ifp, struct mbuf *m,
}
#if defined(INET) || defined(INET6)
-#ifdef DEV_CARP
if (ifp->if_carp &&
- (error = carp_output(ifp, m, dst, NULL)))
+ (error = (*carp_output_p)(ifp, m, dst, NULL)))
goto bad;
#endif
-#endif
/* Handle ng_ether(4) processing, if any */
if (IFP2AC(ifp)->ac_netgraph != NULL) {
@@ -724,7 +721,6 @@ ether_input(struct ifnet *ifp, struct mbuf *m)
}
#if defined(INET) || defined(INET6)
-#ifdef DEV_CARP
/*
* Clear M_PROMISC on frame so that carp(4) will see it when the
* mbuf flows up to Layer 3.
@@ -735,11 +731,10 @@ ether_input(struct ifnet *ifp, struct mbuf *m)
* TODO: Maintain a hash table of ethernet addresses other than
* ether_dhost which may be active on this ifp.
*/
- if (ifp->if_carp && carp_forus(ifp->if_carp, eh->ether_dhost)) {
+ if (ifp->if_carp && (*carp_forus_p)(ifp, eh->ether_dhost)) {
m->m_flags &= ~M_PROMISC;
} else
#endif
-#endif
{
/*
* If the frame received was not for our MAC address, set the
OpenPOWER on IntegriCloud