1*9b4c7145Sjojemann /* 2*9b4c7145Sjojemann * Copyright (C) 1993-2001 by Darren Reed. 3*9b4c7145Sjojemann * 4*9b4c7145Sjojemann * See the IPFILTER.LICENCE file for details on licencing. 5*9b4c7145Sjojemann * 6*9b4c7145Sjojemann * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 7*9b4c7145Sjojemann * Use is subject to license terms. 8*9b4c7145Sjojemann */ 9*9b4c7145Sjojemann 10*9b4c7145Sjojemann #pragma ident "%Z%%M% %I% %E% SMI" 11*9b4c7145Sjojemann 12*9b4c7145Sjojemann #include "ipf.h" 13*9b4c7145Sjojemann 14*9b4c7145Sjojemann void nat_setgroupmap(n) 15*9b4c7145Sjojemann ipnat_t *n; 16*9b4c7145Sjojemann { 17*9b4c7145Sjojemann if (n->in_outmsk == n->in_inmsk) 18*9b4c7145Sjojemann n->in_ippip = 1; 19*9b4c7145Sjojemann else if (n->in_flags & IPN_AUTOPORTMAP) { 20*9b4c7145Sjojemann n->in_ippip = ~ntohl(n->in_inmsk); 21*9b4c7145Sjojemann if (n->in_outmsk != 0xffffffff) 22*9b4c7145Sjojemann n->in_ippip /= (~ntohl(n->in_outmsk) + 1); 23*9b4c7145Sjojemann n->in_ippip++; 24*9b4c7145Sjojemann if (n->in_ippip == 0) 25*9b4c7145Sjojemann n->in_ippip = 1; 26*9b4c7145Sjojemann n->in_ppip = USABLE_PORTS / n->in_ippip; 27*9b4c7145Sjojemann } else { 28*9b4c7145Sjojemann n->in_space = USABLE_PORTS * ~ntohl(n->in_outmsk); 29*9b4c7145Sjojemann n->in_nip = 0; 30*9b4c7145Sjojemann if (!(n->in_ppip = n->in_pmin)) 31*9b4c7145Sjojemann n->in_ppip = 1; 32*9b4c7145Sjojemann n->in_ippip = USABLE_PORTS / n->in_ppip; 33*9b4c7145Sjojemann } 34*9b4c7145Sjojemann } 35