diff options
author | Martin Pieuchot <mpi@cvs.openbsd.org> | 2015-05-13 08:16:02 +0000 |
---|---|---|
committer | Martin Pieuchot <mpi@cvs.openbsd.org> | 2015-05-13 08:16:02 +0000 |
commit | 889970baeca780212c1953e389cafda53b2d471e (patch) | |
tree | 05d50ddf0fbcaea01b865047037901b81150c361 | |
parent | 796ce93199b85ac41c23d60203aa891aec3d181e (diff) |
Get rid of the last "#if NTRUNK" by overwriting trunk ports' output
function.
ok claudio@, reyk@
-rw-r--r-- | sys/net/if_ethersubr.c | 16 | ||||
-rw-r--r-- | sys/net/if_trunk.c | 23 | ||||
-rw-r--r-- | sys/net/if_trunk.h | 4 |
3 files changed, 26 insertions, 17 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index dd9edad20d2..4262c49e6d7 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_ethersubr.c,v 1.196 2015/05/11 08:41:43 mpi Exp $ */ +/* $OpenBSD: if_ethersubr.c,v 1.197 2015/05/13 08:16:01 mpi Exp $ */ /* $NetBSD: if_ethersubr.c,v 1.19 1996/05/07 02:40:30 thorpej Exp $ */ /* @@ -87,8 +87,6 @@ didn't get a copy, you may request one from <license@ipv6.nrl.navy.mil>. #include <sys/syslog.h> #include <sys/timeout.h> -#include <crypto/siphash.h> /* required by if_trunk.h */ - #include <net/if.h> #include <net/netisr.h> #include <net/route.h> @@ -127,11 +125,6 @@ didn't get a copy, you may request one from <license@ipv6.nrl.navy.mil>. #include <net/if_pppoe.h> #endif -#include "trunk.h" -#if NTRUNK > 0 -#include <net/if_trunk.h> -#endif - #ifdef INET6 #include <netinet6/in6_var.h> #include <netinet6/nd6.h> @@ -275,13 +268,6 @@ ether_output(struct ifnet *ifp0, struct mbuf *m0, struct sockaddr *dst, } #endif -#if NTRUNK > 0 - /* restrict transmission on trunk members to bpf only */ - if (ifp->if_type == IFT_IEEE8023ADLAG && - (m_tag_find(m, PACKET_TAG_DLT, NULL) == NULL)) - senderr(EBUSY); -#endif - esrc = ac->ac_enaddr; #if NCARP > 0 diff --git a/sys/net/if_trunk.c b/sys/net/if_trunk.c index e786b274e7d..4bdc88100c3 100644 --- a/sys/net/if_trunk.c +++ b/sys/net/if_trunk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_trunk.c,v 1.96 2015/05/11 08:41:43 mpi Exp $ */ +/* $OpenBSD: if_trunk.c,v 1.97 2015/05/13 08:16:01 mpi Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Reyk Floeter <reyk@openbsd.org> @@ -66,6 +66,8 @@ void trunk_port_watchdog(struct ifnet *); void trunk_port_state(void *); void trunk_port_ifdetach(void *); int trunk_port_ioctl(struct ifnet *, u_long, caddr_t); +int trunk_port_output(struct ifnet *, struct mbuf *, struct sockaddr *, + struct rtentry *); struct trunk_port *trunk_port_get(struct trunk_softc *, struct ifnet *); int trunk_port_checkstacking(struct trunk_softc *); void trunk_port2req(struct trunk_port *, struct trunk_reqport *); @@ -75,6 +77,7 @@ int trunk_ether_delmulti(struct trunk_softc *, struct ifreq *); void trunk_ether_purgemulti(struct trunk_softc *); int trunk_ether_cmdmulti(struct trunk_port *, u_long); int trunk_ioctl_allports(struct trunk_softc *, u_long, caddr_t); +int trunk_input(struct mbuf *, void *); void trunk_start(struct ifnet *); void trunk_init(struct ifnet *); void trunk_stop(struct ifnet *); @@ -362,6 +365,9 @@ trunk_port_create(struct trunk_softc *tr, struct ifnet *ifp) tp->tp_watchdog = ifp->if_watchdog; ifp->if_watchdog = trunk_port_watchdog; + tp->tp_output = ifp->if_output; + ifp->if_output = trunk_port_output; + tp->tp_if = ifp; tp->tp_trunk = tr; @@ -450,6 +456,7 @@ trunk_port_destroy(struct trunk_port *tp) ifp->if_watchdog = tp->tp_watchdog; ifp->if_ioctl = tp->tp_ioctl; + ifp->if_output = tp->tp_output; ifp->if_tp = NULL; hook_disestablish(ifp->if_linkstatehooks, tp->lh_cookie); @@ -565,6 +572,20 @@ trunk_port_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) return (error); } +int +trunk_port_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst, + struct rtentry *rt) +{ + /* restrict transmission on trunk members to bpf only */ + if (ifp->if_type == IFT_IEEE8023ADLAG && + (m_tag_find(m, PACKET_TAG_DLT, NULL) == NULL)) { + m_freem(m); + return (EBUSY); + } + + return (ether_output(ifp, m, dst, rt)); +} + void trunk_port_ifdetach(void *arg) { diff --git a/sys/net/if_trunk.h b/sys/net/if_trunk.h index 91000813b89..b335d2360b0 100644 --- a/sys/net/if_trunk.h +++ b/sys/net/if_trunk.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_trunk.h,v 1.20 2015/05/11 08:41:43 mpi Exp $ */ +/* $OpenBSD: if_trunk.h,v 1.21 2015/05/13 08:16:01 mpi Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Reyk Floeter <reyk@openbsd.org> @@ -141,6 +141,8 @@ struct trunk_port { /* Redirected callbacks */ void (*tp_watchdog)(struct ifnet *); int (*tp_ioctl)(struct ifnet *, u_long, caddr_t); + int (*tp_output)(struct ifnet *, struct mbuf *, struct sockaddr *, + struct rtentry *); SLIST_ENTRY(trunk_port) tp_entries; }; |