Add support for ipv6 addresses as destination

PR:		bin/150530
Submitted by:	andy white <andywhite@gmail.com>
Tested by:	Olivier Cochard-Labbe <olivier@cochard.me>
MFC after:	1 month
This commit is contained in:
Baptiste Daroussin 2012-09-12 10:39:47 +00:00
parent 8840ea45ae
commit 2c0a5e3cee

View File

@ -1931,6 +1931,7 @@ cfline(const char *line, struct filed *f, const char *prog, const char *host)
case '@':
{
char *tp;
char endkey = ':';
/*
* scan forward to see if there is a port defined.
* so we can't use strlcpy..
@ -1939,9 +1940,19 @@ cfline(const char *line, struct filed *f, const char *prog, const char *host)
tp = f->f_un.f_forw.f_hname;
p++;
while (*p && (*p != ':') && (i-- > 0)) {
/*
* an ipv6 address should start with a '[' in that case
* we should scan for a ']'
*/
if (*p == '[') {
p++;
endkey = ']';
}
while (*p && (*p != endkey) && (i-- > 0)) {
*tp++ = *p++;
}
if (endkey == ']' && *p == endkey)
p++;
*tp = '\0';
}
/* See if we copied a domain and have a port */