ipv4_compare()

Compara duas cadeias de caracteres IPv4. As duas cadeias de caracteres IPv4 são analisadas e comparadas ao considerar a máscara de prefixo IP combinada calculada a partir de prefixos de argumento e o argumento opcional PrefixMask .

Syntax

ipv4_compare(Expr1,Expr2[ ,PrefixMask])

Parâmetros

Nome Tipo Obrigatório Descrição
Expr1, Expr2 string ✔️ Uma expressão de cadeia de caracteres que representa um endereço IPv4. Cadeias de caracteres IPv4 podem ser mascaradas usando notação de prefixo IP.
PrefixMask int Um inteiro de 0 a 32 que representa o número de bits mais significativos que são levados em conta.

Notação de prefixo IP

A notação de prefixo IP (também conhecida como notação CIDR) é uma maneira concisa de representar um endereço IP e sua máscara de rede associada. O formato é <base IP>/<prefix length>, em que o comprimento do prefixo é o número de 1 bits à esquerda na máscara de rede. O comprimento do prefixo determina o intervalo de endereços IP que pertencem à rede.

Para IPv4, o comprimento do prefixo é um número entre 0 e 32. Portanto, a notação 192.168.2.0/24 representa o endereço IP 192.168.2.0 com uma máscara de rede de 255.255.255.0. Essa máscara de rede tem 24 bits à esquerda ou um comprimento de prefixo de 24.

Para IPv6, o comprimento do prefixo é um número entre 0 e 128. Portanto, a notação fe80::85d:e82c:9446:7994/120 representa o endereço IP fe80::85d:e82c:9446:7994 com um netmask de ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00. Essa máscara de rede tem 120 bits à esquerda ou um tamanho de prefixo de 120.

Retornos

  • 0: se a representação longa do primeiro argumento de cadeia de caracteres IPv4 for igual ao segundo argumento de cadeia de caracteres IPv4
  • 1: se a representação longa do primeiro argumento de cadeia de caracteres IPv4 for maior que o segundo argumento de cadeia de caracteres IPv4
  • -1: se a representação longa do primeiro argumento de cadeia de caracteres IPv4 for menor que o segundo argumento de cadeia de caracteres IPv4
  • null: se a conversão para uma das duas cadeias de caracteres IPv4 não foi bem-sucedida.

Exemplos: casos de igualdade de comparação IPv4

Comparar IPs usando a notação de prefixo IP especificada dentro das cadeias de caracteres 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)

Saída

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

Comparar IPs usando a notação de prefixo IP especificada dentro das cadeias de caracteres IPv4 e como argumento adicional da ipv4_compare() função

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)

Saída

ip1_string ip2_string prefixo 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