diff options
author | thompsa <thompsa@FreeBSD.org> | 2007-07-05 09:18:57 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2007-07-05 09:18:57 +0000 |
commit | f6d9fae72604856030488a37d5af012b5a8ea828 (patch) | |
tree | e8a81983995a5a3ad430ff5c1ac9456eb81c80be /sys/net/if_lagg.c | |
parent | 6aeecf59e86def3108afc0b6736f4beb06053633 (diff) | |
download | FreeBSD-src-f6d9fae72604856030488a37d5af012b5a8ea828.zip FreeBSD-src-f6d9fae72604856030488a37d5af012b5a8ea828.tar.gz |
Allow the LACP state to be queried from userland which at the moment is the
actor and partner peer info. Print out the active aggregator and per port data
in verbose mode from ifconfig.
Approved by: re (mux)
Diffstat (limited to 'sys/net/if_lagg.c')
-rw-r--r-- | sys/net/if_lagg.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 0bf0c84..ce8d1d7 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -686,6 +686,8 @@ lagg_port2req(struct lagg_port *lp, struct lagg_reqport *rp) strlcpy(rp->rp_portname, lp->lp_ifp->if_xname, sizeof(rp->rp_portname)); rp->rp_prio = lp->lp_prio; rp->rp_flags = lp->lp_flags; + if (sc->sc_portreq != NULL) + (*sc->sc_portreq)(lp, (caddr_t)&rp->rp_psc); /* Add protocol specific flags */ switch (sc->sc_proto) { @@ -768,6 +770,8 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) case SIOCGLAGG: ra->ra_proto = sc->sc_proto; ra->ra_ports = i = 0; + if (sc->sc_req != NULL) + (*sc->sc_req)(sc, (caddr_t)&ra->ra_psc); lp = SLIST_FIRST(&sc->sc_ports); while (lp && ra->ra_size >= i + sizeof(struct lagg_reqport)) { @@ -802,6 +806,8 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) sc->sc_init = NULL; sc->sc_stop = NULL; sc->sc_lladdr = NULL; + sc->sc_req = NULL; + sc->sc_portreq = NULL; } if (error != 0) break; @@ -1532,6 +1538,8 @@ lagg_lacp_attach(struct lagg_softc *sc) sc->sc_init = lacp_init; sc->sc_stop = lacp_stop; sc->sc_lladdr = lagg_lacp_lladdr; + sc->sc_req = lacp_req; + sc->sc_portreq = lacp_portreq; error = lacp_attach(sc); if (error) |