19b4c7145Sjojemann /* 29b4c7145Sjojemann * Copyright (C) 1993-2001 by Darren Reed. 39b4c7145Sjojemann * 49b4c7145Sjojemann * See the IPFILTER.LICENCE file for details on licencing. 59b4c7145Sjojemann * 69b4c7145Sjojemann * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 79b4c7145Sjojemann * Use is subject to license terms. 89b4c7145Sjojemann */ 99b4c7145Sjojemann 109b4c7145Sjojemann #include "ipf.h" 119b4c7145Sjojemann nat_setgroupmap(n)129b4c7145Sjojemannvoid nat_setgroupmap(n) 139b4c7145Sjojemann ipnat_t *n; 149b4c7145Sjojemann { 159b4c7145Sjojemann if (n->in_outmsk == n->in_inmsk) 169b4c7145Sjojemann n->in_ippip = 1; 179b4c7145Sjojemann else if (n->in_flags & IPN_AUTOPORTMAP) { 189b4c7145Sjojemann n->in_ippip = ~ntohl(n->in_inmsk); 199b4c7145Sjojemann if (n->in_outmsk != 0xffffffff) 209b4c7145Sjojemann n->in_ippip /= (~ntohl(n->in_outmsk) + 1); 219b4c7145Sjojemann n->in_ippip++; 229b4c7145Sjojemann if (n->in_ippip == 0) 239b4c7145Sjojemann n->in_ippip = 1; 249b4c7145Sjojemann n->in_ppip = USABLE_PORTS / n->in_ippip; 259b4c7145Sjojemann } else { 269b4c7145Sjojemann n->in_space = USABLE_PORTS * ~ntohl(n->in_outmsk); 279b4c7145Sjojemann n->in_nip = 0; 289b4c7145Sjojemann if (!(n->in_ppip = n->in_pmin)) 299b4c7145Sjojemann n->in_ppip = 1; 309b4c7145Sjojemann n->in_ippip = USABLE_PORTS / n->in_ppip; 319b4c7145Sjojemann } 329b4c7145Sjojemann } 33