ipv4_compare()

Compare deux chaînes IPv4. Les deux chaînes IPv4 sont analysées et comparées lors de la prise en compte du masque de préfixe IP combiné calculé à partir des préfixes d’argument et de l’argument facultatif PrefixMask .

Syntax

ipv4_compare(Expr1,Expr2[ ,PréfixeMask])

Paramètres

Nom Type Obligatoire Description
Expr1, Expr2 string ✔️ Expression de chaîne représentant une adresse IPv4. Les chaînes IPv4 peuvent être masquées à l’aide de la notation de préfixe IP.
PréfixeMask int Entier compris entre 0 et 32 représentant le nombre de bits les plus significatifs pris en compte.

Notation de préfixe IP

La notation de préfixe IP (également appelée notation CIDR) est un moyen concis de représenter une adresse IP et son masque réseau associé. Le format est <base IP>/<prefix length>, où la longueur du préfixe correspond au nombre de 1 bits de début dans le masque de réseau. La longueur du préfixe détermine la plage d’adresses IP qui appartiennent au réseau.

Pour IPv4, la longueur du préfixe est un nombre compris entre 0 et 32. Ainsi, la notation 192.168.2.0/24 représente l’adresse IP 192.168.2.0 avec un masque de réseau de 255.255.255.0. Ce masque de réseau a 24 principaux 1 bits, ou une longueur de préfixe de 24.

Pour IPv6, la longueur du préfixe est un nombre compris entre 0 et 128. Ainsi, la notation fe80 ::85d :e82c :9446 :7994/120 représente l’adresse IP fe80 :::85d :e82c :9446 :7994 avec un masque de réseau de ffff :ffff :ffff :ffff :ff00. Ce masque de réseau a 120 bits de début, soit une longueur de préfixe de 120.

Retours

  • 0: si la représentation longue du premier argument de chaîne IPv4 est égale au deuxième argument de chaîne IPv4
  • 1: si la représentation longue du premier argument de chaîne IPv4 est supérieure au deuxième argument de chaîne IPv4
  • -1: si la représentation longue du premier argument de chaîne IPv4 est inférieure au deuxième argument de chaîne IPv4
  • null: si la conversion de l’une des deux chaînes IPv4 n’a pas réussi.

Exemples : cas d’égalité de comparaison IPv4

Comparer les adresses IP à l’aide de la notation de préfixe IP spécifiée à l’intérieur des chaînes IPv4

datatable(ip1_string:string, ip2_string:string)
[
 '192.168.1.0',    '192.168.1.0',       // Equal IPs
 '192.168.1.1/24', '192.168.1.255',     // 24 bit IP-prefix is used for comparison
 '192.168.1.1',    '192.168.1.255/24',  // 24 bit IP-prefix is used for comparison
 '192.168.1.1/30', '192.168.1.255/24',  // 24 bit IP-prefix is used for comparison
]
| extend result = ipv4_compare(ip1_string, ip2_string)

Sortie

ip1_string ip2_string result
192.168.1.0 192.168.1.0 0
192.168.1.1/24 192.168.1.255 0
192.168.1.1 192.168.1.255/24 0
192.168.1.1/30 192.168.1.255/24 0

Comparer les adresses IP à l’aide de la notation de préfixe IP spécifiée à l’intérieur des chaînes IPv4 et en tant qu’argument supplémentaire de la ipv4_compare() fonction

datatable(ip1_string:string, ip2_string:string, prefix:long)
[
 '192.168.1.1',    '192.168.1.0',   31, // 31 bit IP-prefix is used for comparison
 '192.168.1.1/24', '192.168.1.255', 31, // 24 bit IP-prefix is used for comparison
 '192.168.1.1',    '192.168.1.255', 24, // 24 bit IP-prefix is used for comparison
]
| extend result = ipv4_compare(ip1_string, ip2_string, prefix)

Sortie

ip1_string ip2_string prefix result
192.168.1.1 192.168.1.0 31 0
192.168.1.1/24 192.168.1.255 31 0
192.168.1.1 192.168.1.255 24 0