O grupo filtro providencia um significado do qual uma estação gerente pode instruir um monitor para observar pacotes específicos em uma interface. A construção básica de blocos definidos neste grupo tem dois tipos de filtros: um de Dados e outro de Status.
O filtro de Dados permite ao monitor gravar pacotes observados em parte de um modelo de bit desta porção de pacotes juntos; o filtro Status permite ao monitor gravar pacotes observados em parte desses status (válido, erro CRC...). Esses filtros podem ser combinados usando operações e/ou lógicas para fazer um teste para ser aplicado em pacotes que chegam. A corrente de pacotes que passa o teste é chamada de canal. O canal pode ser configurado para gerar um evento, definido no grupo Event, quando um pacote passa por um canal e o canal está no estado habilitado. Finalmente, os pacotes que passam pelo canal podem ser capturados se o mecanismo é definido no grupo Captura.
No nível mais baixo do filtro, um simples filtro de Dados ou filtro de Status define características de um pacote.
Um canal é definido como um conjunto de filtros. Para cada pacote observado e para cada canal, o pacote passa pelos filtros definidos para este canal. A maneira na qual estes filtros são combinados para determinar se o pacote é aceito pelo canal depende de um valor de um objeto associado com o canal, o channelAcceptType.
O objeto tem a seguinte sintaxe:
INTEGER{ acceptMatched(1), acceptFailed(2) }
Se o valor desse objeto for acceptMatched(1), pacotes serão aceitos para este canal se eles passam pacotes de dados e pacotes de status para pelo menos um dos filtros associados. Se o valor for acceptFailed(2) os pacotes serão aceitos apenas se falhar o pacote de dados ou o pacote de status para todos os filtros associados.
A figura a seguir ilustra a lógica com que os filtros são combinados. Um filtro é passado se o filtro de dados e o filtro de status forem passados, senão o filtro falha. Se definirmos um caminho como um 1 lógico e uma falha como um 0 lógico, então o resultado para um simples filtro é o AND para os dados e o status para aquele filtro. O resultado total para um canal é então o OR para todos os filtros. Assim, um pacote é aceito pelo canal se ele passar pelo menos por um dos pares associados para o canal.
O valor de channelAcceptType e o conjunto de filtros para um canal determina que um certo pacote é aceito pelo canal ou não. Se for aceito, então o contador channelMatches é incrementado. Há controles adicionais associados com o canal: channelDataControl, determina se o canal está ON ou OFF; channelEventStatus, indica que o canal está habilitado para gerar um evento quando um pacote está unido; e channelEventIndex, que especifica um evento associado.
Se channelDataControl está OFF, para este canal nenhum evento pode se gerado como resultado de pacote aceito, e nenhum pacote pode ser capturado pelo grupo Capture. Se channelDataControl está ON, estas ações são possíveis.
Consiste de duas tabelas, cada registro de channelTable define um canal. Associados com este canal estão um ou mais registros em filterTable, que define os filtros associados.
A tabela channelTable inclui os objetos:
channelIfIndex: Identifica a interface monitor e a subrede, da qual os filtros são usados para aprovar dados neste canal.
channelAcceptType: Controla a ação dos filtros associados. Valores possíveis: acceptMatched(1) e acceptFailed(2).
channelDataControl: Se tem o valor 1, então os dados, status e eventos fluem por este canal. Se tem o valor 0 não fluem.
channelTurnOnEventIndex: Identifica o evento configurado para ligar o channelDataControl associado de OFF para ON quando um evento é gerado. O valor deste objeto identifica um objeto indexado por eventIndex no grupo Event. Se não existir nenhum evento, então não existem associações.
channelTurnOffEventIndex: Identifica o evento que está configurado para ligar o channelDataControl associado de ON para OFF quando um evento é gerado. O valor deste objeto identifica um objeto indexado por eventIndex no grupo Event. Se não existir nenhum evento, então não existem associações.
channelEventIndex: Identifica o evento que está configurado para ser gerado quando o channelDataControl associado está ON e um pacote está unido. Identifica um objeto indexado por eventIndex no grupo Event.
channelEventStatus: O evento status desse canal. Se o canal está configurado para gerar eventos pacotes são juntados, então o valor pode ser interpretado da seguinte maneira:
Quando o valor é eventReady(1), um simples evento será gerado para um pacote unido, depois este objeto é setado para (2). No estado eventFired(2), eventos não são gerados. Este permite a estação gerente responder à notificação de um evento e então re-habilitar o objeto. Quando o valor for eventAlwaysReady(3), todos pacotes unidos geram um evento.
channelMatches: Um contador que registra o número de pacotes unidos. É atualizado quando channelDataControl for setado para OFF.
channelDescription: Descrição textual do canal.
filterChannelIndex: Identifica o canal.
filterPktDataOffSet: Deslocamento apartir do início de cada pacote onde uma mistura de dados foi tentada.
filterPktData: Os dados que serão unidos com o pacote de entrada.
filterPktDataMask: Máscara que será aplicada ao processo.
filterPktDataNotMask: Máscara inversa.
filterPktStatusMask: Máscara que será aplicada no status do processo.
filterPktStatusNotMask: Máscara inversa.
filterPktStatus: O status que será unido com o pacote de entrada.