У меня мессаги валятся от всех интерфейсов в буфер. Изначально каждой мессаге ставится флаг, отражающий источник (интерфейс) и что мессага не проверена (F_chanel_no_check). Далее в мейнлупе помянутый свич ветвится по буферу и если находит непровереную месагу, то проверяет её (CRC всякие и т.д.) и если всё ОК ставит ей флаг, что проверена. Этот же свич передаёт управление функции выполнения команды из мессаги, если найдена провереная и корректная мессага.