Optionally support port ranges in leftprotoport

This commit is contained in:
Martin Willi
2013-02-21 11:52:33 +01:00
parent fd658bce28
commit 0e7ef7f522
+20 -4
View File
@@ -303,7 +303,7 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token,
end->from_port = 0xffff; end->from_port = 0xffff;
end->to_port = 0; end->to_port = 0;
} }
else else if (*port)
{ {
svc = getservbyname(port, NULL); svc = getservbyname(port, NULL);
if (svc) if (svc)
@@ -313,12 +313,28 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token,
else else
{ {
p = strtol(port, &endptr, 0); p = strtol(port, &endptr, 0);
if ((*port && *endptr) || p < 0 || p > 0xffff) if (p < 0 || p > 0xffff)
{ {
DBG1(DBG_APP, "# bad port: %s=%s", name, value); DBG1(DBG_APP, "# bad port: %s=%s", name, port);
goto err;
}
end->from_port = p;
if (*endptr == '-')
{
port = endptr + 1;
p = strtol(port, &endptr, 0);
if (p < 0 || p > 0xffff)
{
DBG1(DBG_APP, "# bad port: %s=%s", name, port);
goto err;
}
}
end->to_port = p;
if (*endptr)
{
DBG1(DBG_APP, "# bad port: %s=%s", name, port);
goto err; goto err;
} }
end->from_port = end->to_port = (u_int16_t)p;
} }
} }
if (sep) if (sep)