map: fix portsets starting with 0 and use regular NAT for 1:1 MAP

Signed-off-by: Steven Barth <steven@midlink.org>

SVN-Revision: 42741
This commit is contained in:
Steven Barth
2014-10-02 19:15:38 +00:00
parent 2fa8a656a6
commit def69a96e9
3 changed files with 31 additions and 19 deletions

View File

@@ -343,14 +343,17 @@ int main(int argc, char *argv[])
}
if (psidlen == 0) {
printf("RULE_%d_PORTSETS=0-65535\n", rulecnt);
} else if (psid >= 0) {
if (psidlen > 0 && psid >= 0) {
printf("RULE_%d_PORTSETS='", rulecnt);
for (int k = (offset) ? 1 : 0; k < (1 << offset); ++k) {
int start = (k << (16 - offset)) | (psid >> offset);
int end = start + (1 << (16 - offset - psidlen)) - 1;
printf("%d-%d ", start, end);
if (start == 0)
start = 1;
if (start <= end)
printf("%d-%d ", start, end);
}
printf("'\n");
}