assert isset bridge
+ local enabled=$(__device_get_file ${bridge} "bridge/stp_state")
+ if ! enabled ${enabled}; then
+ return ${EXIT_OK}
+ fi
+
local mode=$(__rstpctl_bridge_get ${bridge} protocol_version)
case "${mode}" in
;;
2)
echo "rstp"
- ;;
+ ;;
+ # When rstpctl has an error, we assume that rstpd is not running and
+ # return the slow mode.
+ "")
+ echo "stp"
+ ;;
esac
}
;;
esac
- mac_format ${output:5:12}
+ if [ -n "${output}" ]; then
+ mac_format ${output:5:12}
+ return ${EXIT_OK}
+ fi
return ${EXIT_ERROR}
}
exit ${EXIT_ERROR}
fi
- # XXX Add bridge stp priority here
- # brctl does not give any information about that
-
cli_headline " Spanning Tree Protocol information:"
- printf "${DEVICE_PRINT_LINE1}" "ID:" $(stp_bridge_get_id ${zone})
- printf "${DEVICE_PRINT_LINE1}" "Priority:" $(stp_bridge_get_priority ${zone})
+ if [ -n "$(stp_bridge_get_protocol ${zone})" ]; then
+ printf "${DEVICE_PRINT_LINE1}" "Version:" $(stp_bridge_get_protocol ${zone})
+ printf "${DEVICE_PRINT_LINE1}" "ID:" $(stp_bridge_get_id ${zone})
+ printf "${DEVICE_PRINT_LINE1}" "Priority:" $(stp_bridge_get_priority ${zone})
+
+ if stp_bridge_is_root ${zone}; then
+ echo -e " ${COLOUR_BOLD}This bridge is root.${COLOUR_NORMAL}"
+ else
+ printf "${DEVICE_PRINT_LINE1}" "Designated root:" $(stp_bridge_get_designated_root ${zone})
+ printf "${DEVICE_PRINT_LINE1}" "Root path cost:" $(stp_bridge_get_root_path_cost ${zone})
+ fi
+ echo # Empty line
- if stp_bridge_is_root ${zone}; then
- echo -e " ${COLOUR_BOLD}This bridge is root.${COLOUR_NORMAL}"
+ # Topology information
+ printf "${DEVICE_PRINT_LINE1}" "Topology changing:" $(stp_bridge_get_topology_change_detected ${zone})
+ printf "${DEVICE_PRINT_LINE1}" "Topology change time:" $(beautify_time $(stp_bridge_get_topology_change_timer ${zone}))
+ printf "${DEVICE_PRINT_LINE1}" "Topology change count:" $(stp_bridge_get_topology_change_count ${zone})
else
- printf "${DEVICE_PRINT_LINE1}" "Designated root:" $(stp_bridge_get_designated_root ${zone})
- printf "${DEVICE_PRINT_LINE1}" "Root path cost:" $(stp_bridge_get_root_path_cost ${zone})
+ echo -e " ${COLOUR_BOLD}STP is disabled.${COLOUR_NORMAL}"
fi
- echo # Empty line
-
- # Topology information
- printf "${DEVICE_PRINT_LINE1}" "Topology changing:" $(stp_bridge_get_topology_change_detected ${zone})
- printf "${DEVICE_PRINT_LINE1}" "Topology change time:" $(beautify_time $(stp_bridge_get_topology_change_timer ${zone}))
- printf "${DEVICE_PRINT_LINE1}" "Topology change count:" $(stp_bridge_get_topology_change_count ${zone})
cli_headline " Ports:"
zone_ports_status ${zone}
printf " %-10s - " "${port}"
if ! device_is_up ${port}; then
echo -ne "${COLOUR_DOWN} DOWN ${COLOUR_NORMAL}"
- else
+ elif [ -n "$(stp_bridge_get_protocol ${zone})" ]; then
local state=$(stp_port_get_state ${zone} ${port})
local colour="COLOUR_STP_${state}"
printf "${!colour}%10s${COLOUR_NORMAL}" ${state}
echo -n " - DSR: $(stp_port_get_designated_root ${zone} ${port})"
echo -n " - Cost: $(stp_port_get_cost ${zone} ${port})"
+ else
+ echo -ne "${COLOUR_UP} UP ${COLOUR_NORMAL}"
fi
echo