次の方法で共有


ipv4_is_match()

2 つの IPv4 文字列を照合します。 2 つの IPv4 文字列では、引数のプレフィックスおよび省略可能な引数 prefix から計算された IP プレフィックス マスクの組み合わせの構成時に、解析と比較が実行されます。

構文

ipv4_is_match(Ip1,ip2[ ,プレフィックス])

構文規則について詳しく知る。

パラメーター

名前 必須 説明
ip1ip2 string ✔️ IPv4 アドレスを表す式。 IPv4 文字列は、IP プレフィックス表記を使用してマスクできます。
prefix int 考慮される最上位ビットの数を表す 0 ~ 32 の整数。

IP プレフィックスの表記

IP プレフィックス表記 (CIDR 表記とも呼ばれます) は、IP アドレスとそれに関連付けられているネットワーク マスクを表す簡潔な方法です。 形式は です <base IP>/<prefix length>。プレフィックスの長さは、ネットマスク内の先頭の 1 ビットの数です。 プレフィックスの長さは、ネットワークに属する IP アドレスの範囲を決定します。

IPv4 の場合、プレフィックスの長さは 0 ~ 32 の数値です。 そのため、表記 192.168.2.0/24 は IP アドレス 192.168.2.0 を表し、ネットマスクは 255.255.255.0 です。 このネットマスクの先頭は 24 ビット、プレフィックス長は 24 です。

IPv6 の場合、プレフィックスの長さは 0 ~ 128 の数値です。 そのため、表記 fe80::85d:e82c:9446:7994/120 は、ffff:ffff:ffff:ffff:ffff:ff00 のネットマスクを含む IP アドレス fe80::85d:e82c:9446:7994 を表します。 このネットマスクの先頭は 120 ビット、プレフィックス長は 120 です。

戻り値

  • true: 最初の IPv4 文字列引数の長い表記が 2 番目の IPv4 文字列引数と等しい場合
  • false: それ以外の場合。
  • null: 2 つの IPv4 文字列のいずれかの変換が成功しなかった場合。

Note

範囲ではない IPv4 アドレスと照合する場合は、パフォーマンスを向上させるために等号演算子 (==) を使用することをお勧めします。

IPv4 等値比較のケース - IPv4 文字列内で指定された IP プレフィックス表記

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_is_match(ip1_string, ip2_string)

出力

ip1_string ip2_string 結果
192.168.1.0 192.168.1.0 TRUE
192.168.1.1/24 192.168.1.255 TRUE
192.168.1.1 192.168.1.255/24 TRUE
192.168.1.1/30 192.168.1.255/24 TRUE

IPv4 等価比較のケース - IPv4 文字列内で指定された IP プレフィックス表記と、ipv4_is_match() 関数の追加引数を使用

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_is_match(ip1_string, ip2_string, prefix)

出力

ip1_string ip2_string prefix 結果
192.168.1.1 192.168.1.0 31 TRUE
192.168.1.1/24 192.168.1.255 31 TRUE
192.168.1.1 192.168.1.255 24 TRUE