@@ -2164,16 +2164,17 @@ mod tests {
21642164 let unique_local: u16 = 1 << 2 ;
21652165 let global: u16 = 1 << 3 ;
21662166 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 ;
21772178 let multicast: u16 = multicast_interface_local
21782179 | multicast_admin_local
21792180 | multicast_global
@@ -2207,6 +2208,11 @@ mod tests {
22072208 } else {
22082209 assert!( !ip!( $s) . is_unicast_link_local( ) ) ;
22092210 }
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+ }
22102216 if ( $mask & unicast_site_local) == unicast_site_local {
22112217 assert!( ip!( $s) . is_unicast_site_local( ) ) ;
22122218 } else {
@@ -2265,16 +2271,17 @@ mod tests {
22652271 let unique_local: u16 = 1 << 2 ;
22662272 let global: u16 = 1 << 3 ;
22672273 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 ;
22782285
22792286 check ! ( "::" ,
22802287 & [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
@@ -2304,10 +2311,32 @@ mod tests {
23042311 & [ 0xfe , 0x80 , 0xff , 0xff , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
23052312 unicast_link_local) ;
23062313
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+
23072318 check ! ( "febf:ffff::" ,
23082319 & [ 0xfe , 0xbf , 0xff , 0xff , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
23092320 unicast_link_local) ;
23102321
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+
23112340 check ! ( "fec0::" ,
23122341 & [ 0xfe , 0xc0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
23132342 unicast_site_local|unicast_global|global) ;
0 commit comments