[
https://issues.apache.org/jira/browse/HADOOP-6682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12853739#action_12853739
]
Hong Tang commented on HADOOP-6682:
-----------------------------------
Similar issue came up in MAPREDUCE-1222. The following code might be useful:
{noformat}
+ static Pattern IP_PATTERN;
+
+ static {
+ // 0-255
+ String IPV4BK1 = "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
+ // .b.c.d - where b/c/d are 0-255, and optionally adding two more
+ // backslashes before each period
+ String IPV4BKN = "(?:\\\\?\\." + IPV4BK1 + "){3}";
+ String IPV4_PATTERN = IPV4BK1 + IPV4BKN;
+
+ // first hexadecimal number
+ String IPV6BK1 = "(?:[0-9a-fA-F]{1,4})";
+ // remaining 7 hexadecimal numbers, each preceded with ":".
+ String IPV6BKN = "(?::" + IPV6BK1 + "){7}";
+ String IPV6_PATTERN = IPV6BK1 + IPV6BKN;
+
+ IP_PATTERN = Pattern.compile(
+ "^(?:" + IPV4_PATTERN + "|" + IPV6_PATTERN + ")$");
+ }
+
+
+ static boolean isIPAddress(String hostname) {
+ return IP_PATTERN.matcher(hostname).matches();
+ }
{noformat}
> NetUtils:normalizeHostName does not process hostnames starting with [a-f]
> correctly
> -----------------------------------------------------------------------------------
>
> Key: HADOOP-6682
> URL: https://issues.apache.org/jira/browse/HADOOP-6682
> Project: Hadoop Common
> Issue Type: Bug
> Components: io
> Reporter: Jakob Homan
>
> public static String normalizeHostName(String name) {
> if (Character.digit(name.charAt(0), 16) != -1) {
> return name;
> This code is attempting to short-circuit the hostname->ip resolution on the
> assumption that if name starts with a digit, it's already an ip address.
> This is of questionable value, but because it checks for a hex digit, it will
> fail on names starting with [a-f]. Such names will not be converted to an ip
> address, but be returned unchanged.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.