optprint.c revision 145519
1207536Smav/* $FreeBSD: head/contrib/ipfilter/lib/optprint.c 145519 2005-04-25 18:20:15Z darrenr $ */ 2207536Smav 3207536Smav/* 4207536Smav * Copyright (C) 1993-2001 by Darren Reed. 5207536Smav * 6207536Smav * See the IPFILTER.LICENCE file for details on licencing. 7207536Smav * 8207536Smav * Id: optprint.c,v 1.6 2002/07/13 15:59:49 darrenr Exp 9207536Smav */ 10207536Smav#include "ipf.h" 11207536Smav 12207536Smav 13207536Smavvoid optprint(sec, optmsk, optbits) 14207536Smavu_short *sec; 15207536Smavu_long optmsk, optbits; 16207536Smav{ 17207536Smav u_short secmsk = sec[0], secbits = sec[1]; 18207536Smav struct ipopt_names *io, *so; 19207536Smav char *s; 20207536Smav 21207536Smav s = " opt "; 22207536Smav for (io = ionames; io->on_name; io++) 23207536Smav if ((io->on_bit & optmsk) && 24207536Smav ((io->on_bit & optmsk) == (io->on_bit & optbits))) { 25207536Smav if ((io->on_value != IPOPT_SECURITY) || 26207536Smav (!secmsk && !secbits)) { 27207536Smav printf("%s%s", s, io->on_name); 28207536Smav if (io->on_value == IPOPT_SECURITY) 29207536Smav io++; 30207536Smav s = ","; 31207536Smav } 32207536Smav } 33207536Smav 34207536Smav 35207536Smav if (secmsk & secbits) { 36207536Smav printf("%ssec-class", s); 37207536Smav s = " "; 38207536Smav for (so = secclass; so->on_name; so++) 39207536Smav if ((secmsk & so->on_bit) && 40207536Smav ((so->on_bit & secmsk) == (so->on_bit & secbits))) { 41207536Smav printf("%s%s", s, so->on_name); 42207536Smav s = ","; 43207536Smav } 44207536Smav } 45207536Smav 46220097Smav if ((optmsk && (optmsk != optbits)) || 47220097Smav (secmsk && (secmsk != secbits))) { 48207536Smav s = " "; 49207536Smav printf(" not opt"); 50207536Smav if (optmsk != optbits) { 51207536Smav for (io = ionames; io->on_name; io++) 52207536Smav if ((io->on_bit & optmsk) && 53207536Smav ((io->on_bit & optmsk) != 54207536Smav (io->on_bit & optbits))) { 55207536Smav if ((io->on_value != IPOPT_SECURITY) || 56207536Smav (!secmsk && !secbits)) { 57207536Smav printf("%s%s", s, io->on_name); 58207536Smav s = ","; 59207536Smav if (io->on_value == 60207536Smav IPOPT_SECURITY) 61207536Smav io++; 62207536Smav } else 63207536Smav io++; 64207536Smav } 65207536Smav } 66238873Shrs 67207536Smav if (secmsk != secbits) { 68207536Smav printf("%ssec-class", s); 69266046Sian s = " "; 70266046Sian for (so = secclass; so->on_name; so++) 71207536Smav if ((so->on_bit & secmsk) && 72207536Smav ((so->on_bit & secmsk) != 73207536Smav (so->on_bit & secbits))) { 74207536Smav printf("%s%s", s, so->on_name); 75207536Smav s = ","; 76207536Smav } 77207536Smav } 78207536Smav } 79207536Smav} 80207536Smav