@@ -2164,16 +2164,17 @@ mod tests {
2164
2164
let unique_local: u16 = 1 << 2 ;
2165
2165
let global: u16 = 1 << 3 ;
2166
2166
let unicast_link_local: u16 = 1 << 4 ;
2167
- let unicast_site_local: u16 = 1 << 5 ;
2168
- let unicast_global: u16 = 1 << 6 ;
2169
- let documentation: u16 = 1 << 7 ;
2170
- let multicast_interface_local: u16 = 1 << 8 ;
2171
- let multicast_link_local: u16 = 1 << 9 ;
2172
- let multicast_realm_local: u16 = 1 << 10 ;
2173
- let multicast_admin_local: u16 = 1 << 11 ;
2174
- let multicast_site_local: u16 = 1 << 12 ;
2175
- let multicast_organization_local: u16 = 1 << 13 ;
2176
- let multicast_global: u16 = 1 << 14 ;
2167
+ let unicast_link_local_strict: u16 = 1 << 5 ;
2168
+ let unicast_site_local: u16 = 1 << 6 ;
2169
+ let unicast_global: u16 = 1 << 7 ;
2170
+ let documentation: u16 = 1 << 8 ;
2171
+ let multicast_interface_local: u16 = 1 << 9 ;
2172
+ let multicast_link_local: u16 = 1 << 10 ;
2173
+ let multicast_realm_local: u16 = 1 << 11 ;
2174
+ let multicast_admin_local: u16 = 1 << 12 ;
2175
+ let multicast_site_local: u16 = 1 << 13 ;
2176
+ let multicast_organization_local: u16 = 1 << 14 ;
2177
+ let multicast_global: u16 = 1 << 15 ;
2177
2178
let multicast: u16 = multicast_interface_local
2178
2179
| multicast_admin_local
2179
2180
| multicast_global
@@ -2207,6 +2208,11 @@ mod tests {
2207
2208
} else {
2208
2209
assert!( !ip!( $s) . is_unicast_link_local( ) ) ;
2209
2210
}
2211
+ if ( $mask & unicast_link_local_strict) == unicast_link_local_strict {
2212
+ assert!( ip!( $s) . is_unicast_link_local_strict( ) ) ;
2213
+ } else {
2214
+ assert!( !ip!( $s) . is_unicast_link_local_strict( ) ) ;
2215
+ }
2210
2216
if ( $mask & unicast_site_local) == unicast_site_local {
2211
2217
assert!( ip!( $s) . is_unicast_site_local( ) ) ;
2212
2218
} else {
@@ -2265,16 +2271,17 @@ mod tests {
2265
2271
let unique_local: u16 = 1 << 2 ;
2266
2272
let global: u16 = 1 << 3 ;
2267
2273
let unicast_link_local: u16 = 1 << 4 ;
2268
- let unicast_site_local: u16 = 1 << 5 ;
2269
- let unicast_global: u16 = 1 << 6 ;
2270
- let documentation: u16 = 1 << 7 ;
2271
- let multicast_interface_local: u16 = 1 << 8 ;
2272
- let multicast_link_local: u16 = 1 << 9 ;
2273
- let multicast_realm_local: u16 = 1 << 10 ;
2274
- let multicast_admin_local: u16 = 1 << 11 ;
2275
- let multicast_site_local: u16 = 1 << 12 ;
2276
- let multicast_organization_local: u16 = 1 << 13 ;
2277
- let multicast_global: u16 = 1 << 14 ;
2274
+ let unicast_link_local_strict: u16 = 1 << 5 ;
2275
+ let unicast_site_local: u16 = 1 << 6 ;
2276
+ let unicast_global: u16 = 1 << 7 ;
2277
+ let documentation: u16 = 1 << 8 ;
2278
+ let multicast_interface_local: u16 = 1 << 9 ;
2279
+ let multicast_link_local: u16 = 1 << 10 ;
2280
+ let multicast_realm_local: u16 = 1 << 11 ;
2281
+ let multicast_admin_local: u16 = 1 << 12 ;
2282
+ let multicast_site_local: u16 = 1 << 13 ;
2283
+ let multicast_organization_local: u16 = 1 << 14 ;
2284
+ let multicast_global: u16 = 1 << 15 ;
2278
2285
2279
2286
check ! ( "::" ,
2280
2287
& [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
@@ -2304,10 +2311,32 @@ mod tests {
2304
2311
& [ 0xfe , 0x80 , 0xff , 0xff , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
2305
2312
unicast_link_local) ;
2306
2313
2314
+ check ! ( "fe80::" ,
2315
+ & [ 0xfe , 0x80 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
2316
+ unicast_link_local|unicast_link_local_strict) ;
2317
+
2307
2318
check ! ( "febf:ffff::" ,
2308
2319
& [ 0xfe , 0xbf , 0xff , 0xff , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
2309
2320
unicast_link_local) ;
2310
2321
2322
+ check ! ( "febf::" ,
2323
+ & [ 0xfe , 0xbf , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
2324
+ unicast_link_local) ;
2325
+
2326
+ check ! ( "febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff" ,
2327
+ & [ 0xfe , 0xbf , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
2328
+ 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ] ,
2329
+ unicast_link_local) ;
2330
+
2331
+ check ! ( "fe80::ffff:ffff:ffff:ffff" ,
2332
+ & [ 0xfe , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
2333
+ 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ] ,
2334
+ unicast_link_local|unicast_link_local_strict) ;
2335
+
2336
+ check ! ( "fe80:0:0:1::" ,
2337
+ & [ 0xfe , 0x80 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
2338
+ unicast_link_local) ;
2339
+
2311
2340
check ! ( "fec0::" ,
2312
2341
& [ 0xfe , 0xc0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
2313
2342
unicast_site_local|unicast_global|global) ;
0 commit comments