ipoptsec.c revision 255332
1145519Sdarrenr/* $FreeBSD: head/contrib/ipfilter/lib/ipoptsec.c 255332 2013-09-06 23:11:19Z cy $ */ 2145510Sdarrenr 3145510Sdarrenr/* 4255332Scy * Copyright (C) 2012 by Darren Reed. 5145510Sdarrenr * 6145510Sdarrenr * See the IPFILTER.LICENCE file for details on licencing. 7145510Sdarrenr * 8255332Scy * $Id$ 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" }, 18145510Sdarrenr { IPSO_CLASS_RES3, 0x08, 0, "reserv-3" }, 19145510Sdarrenr { IPSO_CLASS_CONF, 0x10, 0, "confid" }, 20145510Sdarrenr { IPSO_CLASS_UNCL, 0x20, 0, "unclass" }, 21145510Sdarrenr { IPSO_CLASS_RES2, 0x40, 0, "reserv-2" }, 22145510Sdarrenr { IPSO_CLASS_RES1, 0x80, 0, "reserv-1" }, 23145510Sdarrenr { 0, 0, 0, NULL } /* must be last */ 24145510Sdarrenr}; 25145510Sdarrenr 26145510Sdarrenr 27145510Sdarrenru_char seclevel(slevel) 28255332Scy char *slevel; 29145510Sdarrenr{ 30145510Sdarrenr struct ipopt_names *so; 31145510Sdarrenr 32255332Scy if (slevel == NULL || *slevel == '\0') 33255332Scy return 0; 34255332Scy 35145510Sdarrenr for (so = secclass; so->on_name; so++) 36145510Sdarrenr if (!strcasecmp(slevel, so->on_name)) 37145510Sdarrenr break; 38145510Sdarrenr 39145510Sdarrenr if (!so->on_name) { 40255332Scy fprintf(stderr, "no such security level: '%s'\n", slevel); 41145510Sdarrenr return 0; 42145510Sdarrenr } 43145510Sdarrenr return (u_char)so->on_value; 44145510Sdarrenr} 45145510Sdarrenr 46145510Sdarrenr 47145510Sdarrenru_char secbit(class) 48255332Scy int class; 49145510Sdarrenr{ 50145510Sdarrenr struct ipopt_names *so; 51145510Sdarrenr 52145510Sdarrenr for (so = secclass; so->on_name; so++) 53145510Sdarrenr if (so->on_value == class) 54145510Sdarrenr break; 55145510Sdarrenr 56145510Sdarrenr if (!so->on_name) { 57255332Scy fprintf(stderr, "no such security class: %d.\n", class); 58145510Sdarrenr return 0; 59145510Sdarrenr } 60145510Sdarrenr return (u_char)so->on_bit; 61145510Sdarrenr} 62