9b4c7145ee086c5c8c0a98485972103e5730e346jojemann/*
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann * Copyright (C) 1993-2001 by Darren Reed.
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann *
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann * See the IPFILTER.LICENCE file for details on licencing.
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann *
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann * Use is subject to license terms.
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann */
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann#pragma ident "%Z%%M% %I% %E% SMI"
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann#include "ipf.h"
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann
9b4c7145ee086c5c8c0a98485972103e5730e346jojemannvoid nat_setgroupmap(n)
9b4c7145ee086c5c8c0a98485972103e5730e346jojemannipnat_t *n;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann{
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann if (n->in_outmsk == n->in_inmsk)
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ippip = 1;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann else if (n->in_flags & IPN_AUTOPORTMAP) {
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ippip = ~ntohl(n->in_inmsk);
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann if (n->in_outmsk != 0xffffffff)
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ippip /= (~ntohl(n->in_outmsk) + 1);
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ippip++;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann if (n->in_ippip == 0)
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ippip = 1;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ppip = USABLE_PORTS / n->in_ippip;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann } else {
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_space = USABLE_PORTS * ~ntohl(n->in_outmsk);
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_nip = 0;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann if (!(n->in_ppip = n->in_pmin))
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ppip = 1;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann n->in_ippip = USABLE_PORTS / n->in_ppip;
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann }
9b4c7145ee086c5c8c0a98485972103e5730e346jojemann}