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)129b4c7145Sjojemann void 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