1*0Sstevel@tonic-gate #include "ipf.h" 2*0Sstevel@tonic-gate 3*0Sstevel@tonic-gate int ntomask(v, nbits, ap) 4*0Sstevel@tonic-gate int v, nbits; 5*0Sstevel@tonic-gate u_32_t *ap; 6*0Sstevel@tonic-gate { 7*0Sstevel@tonic-gate u_32_t mask; 8*0Sstevel@tonic-gate 9*0Sstevel@tonic-gate if (nbits < 0) 10*0Sstevel@tonic-gate return -1; 11*0Sstevel@tonic-gate 12*0Sstevel@tonic-gate switch (v) 13*0Sstevel@tonic-gate { 14*0Sstevel@tonic-gate case 4 : 15*0Sstevel@tonic-gate if (nbits > 32 || use_inet6 != 0) 16*0Sstevel@tonic-gate return -1; 17*0Sstevel@tonic-gate if (nbits == 0) { 18*0Sstevel@tonic-gate mask = 0; 19*0Sstevel@tonic-gate } else { 20*0Sstevel@tonic-gate mask = 0xffffffff; 21*0Sstevel@tonic-gate mask <<= (32 - nbits); 22*0Sstevel@tonic-gate } 23*0Sstevel@tonic-gate *ap = htonl(mask); 24*0Sstevel@tonic-gate break; 25*0Sstevel@tonic-gate 26*0Sstevel@tonic-gate case 6 : 27*0Sstevel@tonic-gate if ((nbits > 128) || (use_inet6 == 0)) 28*0Sstevel@tonic-gate return -1; 29*0Sstevel@tonic-gate fill6bits(nbits, ap); 30*0Sstevel@tonic-gate break; 31*0Sstevel@tonic-gate 32*0Sstevel@tonic-gate default : 33*0Sstevel@tonic-gate return -1; 34*0Sstevel@tonic-gate } 35*0Sstevel@tonic-gate return 0; 36*0Sstevel@tonic-gate } 37