Partager via


Écriture du filtre PATTERNMATCH

Le filtre de correspondance de modèle avertit le pilote d’accepter les images qui ont un modèle spécifique à un décalage spécifique. Vous pouvez spécifier un maximum de quatre correspondances de modèle détaillées, qui peuvent être combinées dans des instructions AND ou OR logiques pour l’évaluation du pilote network Monitor.

Pour implémenter des correspondances de modèle, utilisez les structures moniteur réseau suivantes :

Pour évaluer une instruction OR , combiner deux à quatre modèles correspond à une structure ANDEXP (PatternMatch1 || PatternMatch2 || PatternMatch3). Pour évaluer une instruction AND, combinez une à quatre structures ANDEXP et une structure EXPRESSION (AndExp1 && AndExp2).

Définitions de correspondance de modèle

Une correspondance de modèle unique est définie par la structure PATTERNMATCH . Une correspondance individuelle peut fonctionner de l’une des deux manières suivantes.

Normalement, le pilote prend la base de décalage (qui peut être OFFSET_BASIS_RELATIVE_TO_FRAME, OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL, OFFSET_BASIS_RELATIVE_TO_IPX ou OFFSET_BASIS_RELATIVE_TO_IP) et commence à compter. Le pilote compte les octets de décalage à partir de là, puis fait correspondre les données qu’il trouve avec les premiers octets de longueur dans PatternToMatch. S’ils sont identiques et que l’indicateur PATTERN_MATCH_FLAGS_NOT n’est pas défini, ce modèle passe. Si elles sont différentes et que le PATTERN_MATCH_FLAGS_NOT a été défini, le modèle passe. Sinon, ce modèle échoue.

Ou :

Si l’indicateur PATTERN_MATCH_FLAGS_PORT_SPECIFIED est défini et que la base est définie sur OFFSET_BASIS_RELATIVE_TO_IPX ou OFFSET_BASIS_RELATIVE_TO_IP, la comparaison est plus complexe. Tout d’abord, le pilote s’assure que le protocole de base de décalage est présent, puis il vérifie que le port spécifié correspond au port dans le frame. Enfin, le pilote s’assure que le membre PatternToMatch correspond à ce qui précède, à l’exception du décalage par rapport à la fin de l’adresse IP ou IPX. Notez que si la base n’est pas l’une de ces deux, l’indicateur PATTERN_MATCH_FLAGS_PORT_SPECIFIED est ignoré et le modèle est évalué comme ci-dessus.

Pour évaluer une correspondance de modèle unique, une structure EXPRESSION doit avoir un membre AndExp contenant une seule correspondance de modèle.

La création du filtre de correspondance de modèle implique la création de structures PATTERNMATCH et leur combinaison logique avec les structures EXPRESSION et ANDEXP .

Pour écrire un filtre PATTERNMATCH

  1. Dans la structure ANDEXP , renseignez le tableau avec des correspondances de modèle.
  2. Remplissez la structure EXPRESSION avec un tableau de membres AndExp .
  3. Ne dépassez pas un total de quatre correspondances de modèle pour le filtre de capture.
  4. Dans la structure PATTERNMATCH , sélectionnez un type d’indicateur.
  5. Sélectionnez une base de décalage.
  6. Énumérez une valeur de port.
  7. Définissez la valeur de décalage.
  8. Définissez la longueur du modèle.
  9. Énumérez la valeur de modèle.

Exemples PATTERNMATCH

Ce frame représente un décalage standard.

frame de décalage standard

Le fragment de code est implémenté comme suit :

Basis  ->   IP
Offset ->   4 (bytes)
Length ->   2 (bytes)
PatternToMatch[ ] = {x00, x00}

Ce cadre représente un décalage spécifié par le port (par rapport à IPX).

frame de décalage spécifié par port

L’exemple de code est implémenté comme suit :

Port   ->   544
Basis  ->   IPX
Offset ->   2 (bytes)
Length ->   2 (bytes)
PatternToMatch[ ] = {x00, x00}