summaryrefslogtreecommitdiffstats
path: root/sys/net/if_lagg.c
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2008-12-17 21:04:43 +0000
committerthompsa <thompsa@FreeBSD.org>2008-12-17 21:04:43 +0000
commitfc1ece5bbc38d69e4debfb0eed898c51735437b0 (patch)
tree217ca523585f079f2515cfe3bc8f2d5fe12d0a7b /sys/net/if_lagg.c
parentd592108ca6acf64f5a653ef0cbf3be53e7540ce5 (diff)
downloadFreeBSD-src-fc1ece5bbc38d69e4debfb0eed898c51735437b0.zip
FreeBSD-src-fc1ece5bbc38d69e4debfb0eed898c51735437b0.tar.gz
- Protect against sc->sc_primary being null
- Initialise speed where its used
Diffstat (limited to 'sys/net/if_lagg.c')
-rw-r--r--sys/net/if_lagg.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c
index f3c4143..0ab96b3 100644
--- a/sys/net/if_lagg.c
+++ b/sys/net/if_lagg.c
@@ -1211,7 +1211,7 @@ lagg_linkstate(struct lagg_softc *sc)
{
struct lagg_port *lp;
int new_link = LINK_STATE_DOWN;
- uint64_t speed = 0;
+ uint64_t speed;
/* Our link is considered up if at least one of our ports is active */
SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) {
@@ -1225,12 +1225,13 @@ lagg_linkstate(struct lagg_softc *sc)
/* Update if_baudrate to reflect the max possible speed */
switch (sc->sc_proto) {
case LAGG_PROTO_FAILOVER:
- sc->sc_ifp->if_baudrate =
- sc->sc_primary->lp_ifp->if_baudrate;
+ sc->sc_ifp->if_baudrate = sc->sc_primary != NULL ?
+ sc->sc_primary->lp_ifp->if_baudrate : 0;
break;
case LAGG_PROTO_ROUNDROBIN:
case LAGG_PROTO_LOADBALANCE:
case LAGG_PROTO_ETHERCHANNEL:
+ speed = 0;
SLIST_FOREACH(lp, &sc->sc_ports, lp_entries)
speed += lp->lp_ifp->if_baudrate;
sc->sc_ifp->if_baudrate = speed;
OpenPOWER on IntegriCloud