Function parse_client_ip

Source
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);