optprint.c revision 145511
1/* $NetBSD$ */ 2 3/* 4 * Copyright (C) 1993-2001 by Darren Reed. 5 * 6 * See the IPFILTER.LICENCE file for details on licencing. 7 * 8 * Id: optprint.c,v 1.6 2002/07/13 15:59:49 darrenr Exp 9 */ 10#include "ipf.h" 11 12 13void optprint(sec, optmsk, optbits) 14u_short *sec; 15u_long optmsk, optbits; 16{ 17 u_short secmsk = sec[0], secbits = sec[1]; 18 struct ipopt_names *io, *so; 19 char *s; 20 21 s = " opt "; 22 for (io = ionames; io->on_name; io++) 23 if ((io->on_bit & optmsk) && 24 ((io->on_bit & optmsk) == (io->on_bit & optbits))) { 25 if ((io->on_value != IPOPT_SECURITY) || 26 (!secmsk && !secbits)) { 27 printf("%s%s", s, io->on_name); 28 if (io->on_value == IPOPT_SECURITY) 29 io++; 30 s = ","; 31 } 32 } 33 34 35 if (secmsk & secbits) { 36 printf("%ssec-class", s); 37 s = " "; 38 for (so = secclass; so->on_name; so++) 39 if ((secmsk & so->on_bit) && 40 ((so->on_bit & secmsk) == (so->on_bit & secbits))) { 41 printf("%s%s", s, so->on_name); 42 s = ","; 43 } 44 } 45 46 if ((optmsk && (optmsk != optbits)) || 47 (secmsk && (secmsk != secbits))) { 48 s = " "; 49 printf(" not opt"); 50 if (optmsk != optbits) { 51 for (io = ionames; io->on_name; io++) 52 if ((io->on_bit & optmsk) && 53 ((io->on_bit & optmsk) != 54 (io->on_bit & optbits))) { 55 if ((io->on_value != IPOPT_SECURITY) || 56 (!secmsk && !secbits)) { 57 printf("%s%s", s, io->on_name); 58 s = ","; 59 if (io->on_value == 60 IPOPT_SECURITY) 61 io++; 62 } else 63 io++; 64 } 65 } 66 67 if (secmsk != secbits) { 68 printf("%ssec-class", s); 69 s = " "; 70 for (so = secclass; so->on_name; so++) 71 if ((so->on_bit & secmsk) && 72 ((so->on_bit & secmsk) != 73 (so->on_bit & secbits))) { 74 printf("%s%s", s, so->on_name); 75 s = ","; 76 } 77 } 78 } 79} 80