pub fn parse_client_ip(client_ip: &str) -> ClientSubnetEncodingDataExpand description
Parses passed client_ip into various data, returns
ClientSubnetEncodingData.
Takes in one param: client_ip. Attempts to parse the client_ip into an
IpAddr. If successful, determines if it’s an Ipv4Addr or an
Ipv6Addr. Returns ClientSubnetEncodingData with the parsed
information. If unsuccessful, returns ClientSubnetEncodingData with all
properties set to 0.
§Examples:
use amazon_cloudfront_client_routing_lib::ip::parse_client_ip;
// Ipv4
let mut client_subnet_encoding_data = parse_client_ip("1.2.3.4");
assert_eq!([1, 2, 3, 0, 0, 0, 0, 0], client_subnet_encoding_data.client_subnet.to_be_bytes());
assert_eq!(24, client_subnet_encoding_data.subnet_mask);
assert_eq!(0, client_subnet_encoding_data.is_ipv6);
// Ipv6
client_subnet_encoding_data = parse_client_ip("0102:0304:0506:0708:090a:0b0c:0d0e:0f10");
assert_eq!([1, 2, 3, 4, 5, 6, 0, 0], client_subnet_encoding_data.client_subnet.to_be_bytes());
assert_eq!(48, client_subnet_encoding_data.subnet_mask);
assert_eq!(1, client_subnet_encoding_data.is_ipv6);
// Invalid client ip
client_subnet_encoding_data = parse_client_ip("1.2.a");
assert_eq!([0, 0, 0, 0, 0, 0, 0, 0], client_subnet_encoding_data.client_subnet.to_be_bytes());
assert_eq!(0, client_subnet_encoding_data.subnet_mask);
assert_eq!(0, client_subnet_encoding_data.is_ipv6);