Pass any unmatched slowprotocols frames up the stack instead of dropping them,

there are more subtypes than just LACP.
This commit is contained in:
Andrew Thompson 2007-12-31 01:16:35 +00:00
parent 07aa172f11
commit af0084c92e
3 changed files with 9 additions and 8 deletions

View File

@ -213,7 +213,7 @@ static const lacp_timer_func_t lacp_timer_funcs[LACP_NTIMER] = {
[LACP_TIMER_WAIT_WHILE] = lacp_sm_mux_timer,
};
void
struct mbuf *
lacp_input(struct lagg_port *lgp, struct mbuf *m)
{
struct lagg_softc *sc = lgp->lp_softc;
@ -222,7 +222,7 @@ lacp_input(struct lagg_port *lgp, struct mbuf *m)
if (m->m_pkthdr.len < sizeof(struct ether_header) + sizeof(subtype)) {
m_freem(m);
return;
return (NULL);
}
m_copydata(m, sizeof(struct ether_header), sizeof(subtype), &subtype);
@ -237,10 +237,10 @@ lacp_input(struct lagg_port *lgp, struct mbuf *m)
break;
default:
/* Unknown LACP packet type */
m_freem(m);
break;
/* Not a subtype we are interested in */
return (m);
}
return (NULL);
}
static void

View File

@ -260,7 +260,7 @@ struct lacp_softc {
#define LACP_PORT(_lp) ((struct lacp_port *)(_lp)->lp_psc)
#define LACP_SOFTC(_sc) ((struct lacp_softc *)(_sc)->sc_psc)
void lacp_input(struct lagg_port *, struct mbuf *);
struct mbuf *lacp_input(struct lagg_port *, struct mbuf *);
struct lagg_port *lacp_select_tx_port(struct lagg_softc *, struct mbuf *);
int lacp_attach(struct lagg_softc *);
int lacp_detach(struct lagg_softc *);

View File

@ -1700,8 +1700,9 @@ lagg_lacp_input(struct lagg_softc *sc, struct lagg_port *lp, struct mbuf *m)
/* Tap off LACP control messages */
if (etype == ETHERTYPE_SLOW) {
lacp_input(lp, m);
return (NULL);
m = lacp_input(lp, m);
if (m == NULL)
return (NULL);
}
/*