From c58b3726d6a6ab8990ec745702c21a5bb6f4a9c0 Mon Sep 17 00:00:00 2001 From: "teor (Tim Wilson-Brown)" Date: Mon, 14 Sep 2015 20:01:36 +1000 Subject: [PATCH] Allow IPv6 literal addresses in routersets routerset_parse now accepts IPv6 literal addresses. Fix for ticket 17060. Patch by "teor". Patch on 3ce6e2fba290 (24 Jul 2008), and related commits, released in 0.2.1.3-alpha. --- changes/routerset-parse-IPv6-literals | 5 +++++ src/or/routerset.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 changes/routerset-parse-IPv6-literals diff --git a/changes/routerset-parse-IPv6-literals b/changes/routerset-parse-IPv6-literals new file mode 100644 index 0000000000..c80c82c229 --- /dev/null +++ b/changes/routerset-parse-IPv6-literals @@ -0,0 +1,5 @@ + o Minor bug fixes (routersets, IPv6): + - routerset_parse now accepts IPv6 literal addresses. + Fix for ticket 17060. Patch by "teor". + Patch on 3ce6e2fba290 (24 Jul 2008), and related commits, + released in 0.2.1.3-alpha. diff --git a/src/or/routerset.c b/src/or/routerset.c index 9fe5dffdeb..6a93a327ee 100644 --- a/src/or/routerset.c +++ b/src/or/routerset.c @@ -104,9 +104,11 @@ routerset_parse(routerset_t *target, const char *s, const char *description) description); smartlist_add(target->country_names, countryname); added_countries = 1; - } else if ((strchr(nick,'.') || strchr(nick, '*')) && - (p = router_parse_addr_policy_item_from_string( - nick, ADDR_POLICY_REJECT))) { + } else if ((strchr(nick,'.') || strchr(nick, ':') || strchr(nick, '*')) + && (p = router_parse_addr_policy_item_from_string( + nick, ADDR_POLICY_REJECT))) { + /* IPv4 addresses contain '.', IPv6 addresses contain ':', + * and wildcard addresses contain '*'. */ log_debug(LD_CONFIG, "Adding address %s to %s", nick, description); smartlist_add(target->policies, p); } else {