pub fn parse_client_ip(client_ip: &str) -> ClientSubnetEncodingData
Expand 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);