summaryrefslogtreecommitdiffstats
path: root/lib/optprint.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/optprint.c')
-rw-r--r--lib/optprint.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/optprint.c b/lib/optprint.c
new file mode 100644
index 0000000..8c14fe4
--- /dev/null
+++ b/lib/optprint.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2000-2005 by Darren Reed.
+ *
+ * See the IPFILTER.LICENCE file for details on licencing.
+ *
+ * $Id: optprint.c,v 1.6.4.2 2006/06/16 17:21:08 darrenr Exp $
+ */
+#include "ipf.h"
+
+
+void optprint(sec, optmsk, optbits)
+u_short *sec;
+u_long optmsk, optbits;
+{
+ u_short secmsk = sec[0], secbits = sec[1];
+ struct ipopt_names *io, *so;
+ char *s;
+
+ s = " opt ";
+ for (io = ionames; io->on_name; io++)
+ if ((io->on_bit & optmsk) &&
+ ((io->on_bit & optmsk) == (io->on_bit & optbits))) {
+ if ((io->on_value != IPOPT_SECURITY) ||
+ (!secmsk && !secbits)) {
+ printf("%s%s", s, io->on_name);
+ /*
+ * Because the ionames table has this entry
+ * twice.
+ */
+ if (io->on_value == IPOPT_SECURITY)
+ io++;
+ s = ",";
+ }
+ }
+
+
+ if (secmsk & secbits) {
+ printf("%ssec-class", s);
+ s = " ";
+ for (so = secclass; so->on_name; so++)
+ if ((secmsk & so->on_bit) &&
+ ((so->on_bit & secmsk) == (so->on_bit & secbits))) {
+ printf("%s%s", s, so->on_name);
+ s = ",";
+ }
+ }
+
+ if ((optmsk && (optmsk != optbits)) ||
+ (secmsk && (secmsk != secbits))) {
+ s = " ";
+ printf(" not opt");
+ if (optmsk != optbits) {
+ for (io = ionames; io->on_name; io++)
+ if ((io->on_bit & optmsk) &&
+ ((io->on_bit & optmsk) !=
+ (io->on_bit & optbits))) {
+ if ((io->on_value != IPOPT_SECURITY) ||
+ (!secmsk && !secbits)) {
+ printf("%s%s", s, io->on_name);
+ s = ",";
+ if (io->on_value ==
+ IPOPT_SECURITY)
+ io++;
+ } else
+ io++;
+ }
+ }
+
+ if (secmsk != secbits) {
+ printf("%ssec-class", s);
+ s = " ";
+ for (so = secclass; so->on_name; so++)
+ if ((so->on_bit & secmsk) &&
+ ((so->on_bit & secmsk) !=
+ (so->on_bit & secbits))) {
+ printf("%s%s", s, so->on_name);
+ s = ",";
+ }
+ }
+ }
+}
OpenPOWER on IntegriCloud