# #
###############################################################################
-COLOUR_GREEN="\\033[1;32m"
-COLOUR_RED="\\033[1;31m"
-COLOUR_NORMAL="\\033[0;39m"
-COLOUR_YELLOW="\\033[1;35m"
+# Regular colours
+CLR_BLACK_R='\e[0;30m'
+CLR_RED_R='\e[0;31m'
+CLR_GREEN_R='\e[0;32m'
+CLR_YELLOW_R='\e[0;33m'
+CLR_BLUE_R='\e[0;34m'
+CLR_PURPLE_R='\e[0;35m'
+CLR_CYAN_R='\e[0;36m'
+CLR_WHITE_R='\e[0;37m'
+CLR_RESET_R='\e[0;39m'
+
+# Bold colours
+CLR_BLACK_B='\e[1;30m'
+CLR_RED_B='\e[1;31m'
+CLR_GREEN_B='\e[1;32m'
+CLR_YELLOW_B='\e[1;33m'
+CLR_BLUE_B='\e[1;34m'
+CLR_PURPLE_B='\e[1;35m'
+CLR_CYAN_B='\e[1;36m'
+CLR_WHITE_B='\e[1;37m'
+CLR_RESET_B=${CLR_RESET_R}
+
+# Background colors
+CLR_BLACK_BG='\e[40m'
+CLR_RED_BG='\e[41m'
+CLR_GREEN_BG='\e[42m'
+CLR_YELLOW_BG='\e[43m'
+CLR_BLUE_BG='\e[44m'
+CLR_PURPLE_BG='\e[45m'
+CLR_CYAN_BG='\e[46m'
+CLR_WHITE_BG='\e[47m'
+CLR_RESET_BG='\e[49m'
+
+# Reset everything.
+CLR_RESET_ALL="${CLR_RESET_R}${CLR_RESET_B}${CLR_RESET_BG}"
+
+# Legacy color variables.
+COLOUR_GREEN=${CLR_GREEN_B}
+COLOUR_RED=${CLR_RED_B}
+COLOUR_NORMAL=${CLR_RESET_B}
+COLOUR_YELLOW=${CLR_YELLOW_B}
COLOUR_BOLD="\\033[1;39m"
COLOUR_DOWN=${COLOUR_RED}
COLOUR_ENABLED=${COLOUR_GREEN}
COLOUR_DISABLED=${COLOUR_RED}
-declare -A COLOUR_LOG
-COLOUR_LOG["DEBUG"]=${COLOUR_NORMAL}
-COLOUR_LOG["INFO"]=${COLOUR_NORMAL}
-COLOUR_LOG["ERROR"]=${COLOUR_RED}
-COLOUR_LOG["WARNING"]=${COLOUR_YELLOW}
+declare -A CLR_LOG
+CLR_LOG["DEBUG"]=${CLR_CYAN_R}
+CLR_LOG["INFO"]=${CLR_BLACK_R}
+CLR_LOG["ERROR"]=${CLR_RED_B}
+CLR_LOG["WARNING"]=${CLR_YELLOW_R}
COLOUR_STP_FORWARDING=${COLOUR_GREEN}
COLOUR_STP_DISCARDING=${COLOUR_RED}
COLOUR_STP_BLOCKING=${COLOUR_YELLOW}
COLOUR_VARIABLES="COLOUR_GREEN COLOUR_RED COLOUR_NORMAL COLOUR_YELLOW"
+COLOUR_VARIABLES="${COLOUR_VARIABLES} COLOURBG_GREEN COLOURBG_RED COLOURBG_NORMAL"
+COLOUR_VARIABLES="${COLOUR_VARIABLES} COLOURBG_YELLOW"
COLOUR_VARIABLES="${COLOUR_VARIABLES} COLOUR_BOLD COLOUR_DOWN COLOUR_ERROR"
COLOUR_VARIABLES="${COLOUR_VARIABLES} COLOUR_ERROR COLOUR_OK COLOUR_UP"
COLOUR_VARIABLES="${COLOUR_VARIABLES} COLOUR_WARM COLOUR_ENABLED COLOUR_DISABLED"
colours_disable
fi
}
+
+# Predefined messages
+MSG_HOOK_UP="${CLR_GREEN_BG}${CLR_WHITE_B} UP ${CLR_RESET_B}${CLR_RESET_BG}"
+MSG_HOOK_DOWN="${CLR_RED_BG}${CLR_WHITE_B} DOWN ${CLR_RESET_B}${CLR_RED_BG}"
+
+MSG_DEVICE_STATUS_UNKNOWN="${CLR_GREY_BG}${CLR_BLACK_B} UNKNOWN ${CLR_RESET_ALL}"
+MSG_DEVICE_STATUS_UP="${CLR_GREEN_BG}${CLR_WHITE_B} UP ${CLR_RESET_ALL}"
+MSG_DEVICE_STATUS_DOWN="${CLR_RED_BG}${CLR_WHITE_B} DOWN ${CLR_RESET_ALL}"
+MSG_DEVICE_STATUS_NOCARRIER="${CLR_YELLOW_BG}${CLR_WHITE_B} NO-CARRIER ${CLR_RESET_ALL}"
+
+MSG_STP_FORWARDING="${CLR_GREEN_BG}${CLR_WHITE_B} FORWARDING ${CLR_RESET_ALL}"
+MSG_STP_DISCARDING="${CLR_RED_BG}${CLR_WHITE_B} DISCARDING ${CLR_RESET_ALL}"
+MSG_STP_LEARNING="${CLR_YELLOW_BG}${CLR_WHITE_B} LEARNING ${CLR_RESET_ALL}"
+MSG_STP_LISTENING="${CLR_YELLOW_BG}${CLR_WHITE_B} LISTENING ${CLR_RESET_ALL}"
+MSG_STP_BLOCKING="${CLR_RED_BG}${CLR_WHITE_B} BLOCKING ${CLR_RESET_ALL}"