diff options
author | hasso <hasso> | 2003-05-25 21:04:54 +0000 |
---|---|---|
committer | hasso <hasso> | 2003-05-25 21:04:54 +0000 |
commit | 726f9b2bbdd5a607f7b0a10a64547739b807e361 (patch) | |
tree | 9c46a6ce71cf4ea96553a85a231e38b462b3dee0 /lib/command.c | |
parent | 71c0fb50fe75928f8fbe1bbff1995d9d91b3702b (diff) |
Last fixes from 6Wind patch.
Diffstat (limited to 'lib/command.c')
-rw-r--r-- | lib/command.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/command.c b/lib/command.c index f57cf5ca..5d429338 100644 --- a/lib/command.c +++ b/lib/command.c @@ -718,6 +718,8 @@ cmd_ipv6_match (char *str) int state = STATE_START; int colons = 0, nums = 0, double_colon = 0; char *sp = NULL; + struct sockaddr_in6 sin6_dummy; + int ret; if (str == NULL) return partly_match; @@ -725,6 +727,15 @@ cmd_ipv6_match (char *str) if (strspn (str, IPV6_ADDR_STR) != strlen (str)) return no_match; + /* use inet_pton that has a better support, + * for example inet_pton can support the automatic addresses: + * ::1.2.3.4 + */ + ret = inet_pton(AF_INET6, str, &sin6_dummy.sin6_addr); + + if (ret == 1) + return exact_match; + while (*str != '\0') { switch (state) |