ipoptsec.c revision 145510
1145519Sdarrenr/* $NetBSD$ */ 2145510Sdarrenr 3145510Sdarrenr/* 4255332Scy * Copyright (C) 1993-2001 by Darren Reed. 5145510Sdarrenr * 6145510Sdarrenr * See the IPFILTER.LICENCE file for details on licencing. 7145510Sdarrenr * 8255332Scy * Id: ipoptsec.c,v 1.2 2002/01/28 06:50:46 darrenr Exp 9145510Sdarrenr */ 10145510Sdarrenr 11145510Sdarrenr#include "ipf.h" 12145510Sdarrenr 13145510Sdarrenr 14145510Sdarrenrstruct ipopt_names secclass[] = { 15145510Sdarrenr { IPSO_CLASS_RES4, 0x01, 0, "reserv-4" }, 16145510Sdarrenr { IPSO_CLASS_TOPS, 0x02, 0, "topsecret" }, 17145510Sdarrenr { IPSO_CLASS_SECR, 0x04, 0, "secret" }, 18255332Scy { IPSO_CLASS_RES3, 0x08, 0, "reserv-3" }, 19255332Scy { IPSO_CLASS_CONF, 0x10, 0, "confid" }, 20255332Scy { IPSO_CLASS_UNCL, 0x20, 0, "unclass" }, 21255332Scy { IPSO_CLASS_RES2, 0x40, 0, "reserv-2" }, 22255332Scy { IPSO_CLASS_RES1, 0x80, 0, "reserv-1" }, 23255332Scy { 0, 0, 0, NULL } /* must be last */ 24145510Sdarrenr}; 25145510Sdarrenr 26145510Sdarrenr 27145510Sdarrenru_char seclevel(slevel) 28255332Scychar *slevel; 29145510Sdarrenr{ 30145510Sdarrenr struct ipopt_names *so; 31145510Sdarrenr 32145510Sdarrenr for (so = secclass; so->on_name; so++) 33145510Sdarrenr if (!strcasecmp(slevel, so->on_name)) 34145510Sdarrenr break; 35145510Sdarrenr 36145510Sdarrenr if (!so->on_name) { 37145510Sdarrenr fprintf(stderr, "no such security level: %s\n", slevel); 38145510Sdarrenr return 0; 39145510Sdarrenr } 40145510Sdarrenr return (u_char)so->on_value; 41145510Sdarrenr} 42145510Sdarrenr 43145510Sdarrenr 44145510Sdarrenru_char secbit(class) 45145510Sdarrenrint class; 46255332Scy{ 47145510Sdarrenr struct ipopt_names *so; 48255332Scy 49255332Scy for (so = secclass; so->on_name; so++) 50145510Sdarrenr if (so->on_value == class) 51145510Sdarrenr break; 52145510Sdarrenr 53145510Sdarrenr if (!so->on_name) { 54145510Sdarrenr fprintf(stderr, "no such security class: %d\n", class); 55 return 0; 56 } 57 return (u_char)so->on_bit; 58} 59