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